⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 func.asm

📁 DSP培训 作业【源码】
💻 ASM
📖 第 1 页 / 共 2 页
字号:
           LDH     .D2T2   *+B4(2),B7        ; |8| (P) <0,1> 

           MVK     .S1     0x1,A1            ; init prolog collapse predicate
||         ADD     .D2     2,B5,B5
||         MV      .L1X    B5,A3
||         LDH     .D1T1   *+A5(2),A4        ; |8| (P) <0,2> 

;** --------------------------------------------------------------------------*
L2:    ; PIPED LOOP KERNEL

           ADD     .L1X    B6,A4,A6          ; |8| <0,6> 
|| [ A0]   BDEC    .S1     L2,A0             ; |9| <1,3> 
||         LDH     .D1T1   *++A5(4),A4       ; |8| <2,0> 
||         LDH     .D2T2   *++B4(4),B6       ; |8| <2,0> 

   [!A1]   STH     .D1T1   A6,*++A3(4)       ; |8| <0,7> 
||         ADD     .S2X    B7,A4,B7          ; |8| <0,7> 
||         LDH     .D2T2   *+B4(2),B7        ; |8| <2,1> 

   [ A1]   SUB     .S1     A1,1,A1           ; <0,8> 
|| [!A1]   STH     .D2T2   B7,*++B5(4)       ; |8| <0,8> 
||         LDH     .D1T1   *+A5(2),A4        ; |8| <2,2> 

;** --------------------------------------------------------------------------*
L3:    ; PIPED LOOP EPILOG
           ADD     .D1X    B6,A4,A5          ; |8| (E) <1,6> 

           ADD     .D2X    B7,A4,B7          ; |8| (E) <1,7> 
||         STH     .D1T1   A5,*++A3(4)       ; |8| (E) <1,7> 

           STH     .D2T2   B7,*++B5(4)       ; |8| (E) <1,8> 

           MVC     .S2     B8,CSR            ; interrupts on
||         ADD     .D1X    B6,A4,A5          ; |8| (E) <2,6> 

           ADD     .D2X    B7,A4,B4          ; |8| (E) <2,7> 
||         STH     .D1T1   A5,*++A3(4)       ; |8| (E) <2,7> 

           STH     .D2T2   B4,*++B5(4)       ; |8| (E) <2,8> 
	.line	11
           RETNOP  .S2     B3,5              ; |11| 
           ; BRANCH OCCURS                   ; |11| 
	.endfunc	11,000000000h,0



	.sect	".text"
	.global	_func2
	.sym	_func2,_func2, 32, 2, 0
	.func	15

;******************************************************************************
;* FUNCTION NAME: _func2                                                      *
;*                                                                            *
;*   Regs Modified     : A0,A3,A4,A5,A6,A7,A8,B0,B4,B5,B6,B7                  *
;*   Regs Used         : A0,A3,A4,A5,A6,A7,A8,B0,B3,B4,B5,B6,B7,DP,SP         *
;*   Local Frame Size  : 0 Args + 0 Auto + 0 Save = 0 byte                    *
;******************************************************************************

;******************************************************************************
;*                                                                            *
;* Using -g (debug) with optimization (-o3) may disable key optimizations!    *
;*                                                                            *
;******************************************************************************
_func2:
;** --------------------------------------------------------------------------*
	.line	2
	.sym	_a,4, 19, 17, 32
	.sym	_b,20, 19, 17, 32
	.sym	_c,6, 19, 17, 32
	.sym	_N,22, 4, 17, 32
	.sym	C$2,3, 7, 4, 64
	.sym	C$3,3, 7, 4, 64
	.sym	_a,3, 19, 4, 32
	.sym	_b,3, 19, 4, 32
	.sym	_c,3, 19, 4, 32
	.sym	_N,22, 4, 4, 32
	.sym	L$1,21, 4, 4, 32
	.sym	U$20,3, 16, 4, 32
	.sym	U$16,20, 16, 4, 32
	.sym	U$12,4, 16, 4, 32
;**  	-----------------------    U$12 = (const void * const restrict)a;
;**  	-----------------------    U$16 = (const void * const restrict)b;
;**  	-----------------------    U$20 = (void * const restrict)c;
;** 30	-----------------------    L$1 = N+3>>2;
;**  	-----------------------    #pragma MUST_ITERATE(10, 536870911, 1)
;**  	-----------------------    #pragma LOOP_FLAGS(4096u)
;**	-----------------------g2:
;** 39	-----------------------    C$3 = *(const double *)U$12++{8};
;** 39	-----------------------    C$2 = *(const double *)U$16++{8};
;** 39	-----------------------    *(double *)U$20++{8} = _itod((unsigned)_add2((int)_hi(C$2), (int)_hi(C$3)), (unsigned)_add2((int)_lo(C$2), (int)_lo(C$3)));
;** 41	-----------------------    if ( --L$1 ) goto g2;
;**  	-----------------------    return;
           MV      .D1     A6,A3             ; |16| 
	.line	16

           ADD     .D2     3,B6,B5           ; |30| 
||         MVC     .S2     CSR,B7

           MV      .D2     B4,B6
||         SHR     .S2     B5,2,B5           ; |30| 
||         AND     .L2     -2,B7,B4

           MV      .D1     A4,A8
||         SUB     .D2     B5,3,B0
||         MVC     .S2     B4,CSR            ; interrupts off

;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*
;*      Loop source line                 : 26
;*      Loop opening brace source line   : 27
;*      Loop closing brace source line   : 41
;*      Known Minimum Trip Count         : 10
;*      Known Max Trip Count Factor      : 1
;*      Loop Carried Dependency Bound(^) : 0
;*      Unpartitioned Resource Bound     : 2
;*      Partitioned Resource Bound(*)    : 2
;*      Resource Partition:
;*                                A-side   B-side
;*      .L units                     0        0     
;*      .S units                     0        1     
;*      .D units                     2*       1     
;*      .M units                     0        0     
;*      .X cross paths               2*       0     
;*      .T address paths             2*       1     
;*      Long read paths              0        0     
;*      Long write paths             0        0     
;*      Logical  ops (.LS)           0        0     (.L or .S unit)
;*      Addition ops (.LSD)          2        0     (.L or .S or .D unit)
;*      Bound(.L .S .LS)             0        1     
;*      Bound(.L .S .D .LS .LSD)     2*       1     
;*
;*      Searching for software pipeline schedule at ...
;*         ii = 2  Schedule found with 4 iterations in parallel
;*
;*      Register Usage Table:
;*          +-----------------------------------------------------------------+
;*          |AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB|
;*          |00000000001111111111222222222233|00000000001111111111222222222233|
;*          |01234567890123456789012345678901|01234567890123456789012345678901|
;*          |--------------------------------+--------------------------------|
;*       0: |*  * ** *                       |*    **                         |
;*       1: |*  ******                       |*   ***                         |
;*          +-----------------------------------------------------------------+
;*
;*      Done
;*
;*      Epilog not removed
;*      Collapsed epilog stages     : 0
;*
;*      Prolog not entirely removed
;*      Collapsed prolog stages     : 1
;*
;*      Minimum required memory pad : 0 bytes
;*
;*      Minimum safe trip count     : 3
;*----------------------------------------------------------------------------*
;*        SINGLE SCHEDULED ITERATION
;*
;*        C74:
;*   0              LDDW    .D1T1   *A8++,A5:A4       ; |39| 
;*       ||         LDDW    .D2T2   *B6++,B5:B4       ; |39| 
;*   1              NOP             1
;*   2      [ B0]   BDEC    .S2     C74,B0            ; |41| 
;*   3              NOP             2
;*   5              ADD2    .L1X    B4,A4,A6          ; |39| 
;*   6              ADD2    .S1X    B5,A5,A7          ; |39| 
;*   7              STDW    .D1T1   A7:A6,*A3++       ; |39| 
;*                  ; BRANCH OCCURS                   ; |41| 
;*----------------------------------------------------------------------------*
L4:    ; PIPED LOOP PROLOG

           LDDW    .D1T1   *A8++,A5:A4       ; |39| (P) <0,0> 
|| [ B0]   BDEC    .S2     L5,B0             ; |41| (P) <0,2> 
||         LDDW    .D2T2   *B6++,B5:B4       ; |39| (P) <0,0> 

           NOP             1

           LDDW    .D2T2   *B6++,B5:B4       ; |39| (P) <1,0> 
|| [ B0]   BDEC    .S2     L5,B0             ; |41| (P) <1,2> 
||         LDDW    .D1T1   *A8++,A5:A4       ; |39| (P) <1,0> 

           MVK     .D1     0x1,A0            ; init prolog collapse predicate
;** --------------------------------------------------------------------------*
L5:    ; PIPED LOOP KERNEL

           ADD2    .S1X    B5,A5,A7          ; |39| <0,6> 
|| [ B0]   BDEC    .S2     L5,B0             ; |41| <2,2> 
||         LDDW    .D1T1   *A8++,A5:A4       ; |39| <3,0> 
||         LDDW    .D2T2   *B6++,B5:B4       ; |39| <3,0> 

   [ A0]   SUB     .S1     A0,1,A0           ; <0,7> 
|| [!A0]   STDW    .D1T1   A7:A6,*A3++       ; |39| <0,7> 
||         ADD2    .L1X    B4,A4,A6          ; |39| <1,5> 

;** --------------------------------------------------------------------------*
L6:    ; PIPED LOOP EPILOG
           ADD2    .D1X    B5,A5,A7          ; |39| (E) <1,6> 

           ADD2    .S1X    B4,A4,A6          ; |39| (E) <2,5> 
||         STDW    .D1T1   A7:A6,*A3++       ; |39| (E) <1,7> 

           MVC     .S2     B7,CSR            ; interrupts on
||         ADD2    .D1X    B5,A5,A7          ; |39| (E) <2,6> 

           ADD2    .S1X    B5,A5,A7          ; |39| (E) <3,6> 
||         STDW    .D1T1   A7:A6,*A3++       ; |39| (E) <2,7> 

           ADD2    .D1X    B4,A4,A6          ; |39| (E) <3,5> 
           STDW    .D1T1   A7:A6,*A3++       ; |39| (E) <3,7> 
	.line	29
           RETNOP  .S2     B3,5              ; |43| 
           ; BRANCH OCCURS                   ; |43| 
	.endfunc	43,000000000h,0



	.sect	".text"
	.global	_main
	.file	"D:\DM64xApp\5stsrc\dataPack\main.c"
	.sym	_main,_main, 32, 2, 0
	.func	50

;******************************************************************************
;* FUNCTION NAME: _main                                                       *
;*                                                                            *
;*   Regs Modified     : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6,  *
;*                           B7,B8,B9,SP,A16,A17,A18,A19,A20,A21,A22,A23,A24, *
;*                           A25,A26,A27,A28,A29,A30,A31,B16,B17,B18,B19,B20, *
;*                           B21,B22,B23,B24,B25,B26,B27,B28,B29,B30,B31      *
;*   Regs Used         : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6,  *
;*                           B7,B8,B9,DP,SP,A16,A17,A18,A19,A20,A21,A22,A23,  *
;*                           A24,A25,A26,A27,A28,A29,A30,A31,B16,B17,B18,B19, *
;*                           B20,B21,B22,B23,B24,B25,B26,B27,B28,B29,B30,B31  *
;*   Local Frame Size  : 8 Args + 0 Auto + 4 Save = 12 byte                   *
;******************************************************************************

;******************************************************************************
;*                                                                            *
;* Using -g (debug) with optimization (-o3) may disable key optimizations!    *
;*                                                                            *
;******************************************************************************
_main:
;** --------------------------------------------------------------------------*
	.line	2
	.sym	C$1,25, 19, 4, 32
	.sym	C$2,24, 19, 4, 32
	.sym	C$3,4, 19, 4, 32
	.sym	C$4,53, 19, 4, 32
;** 54	-----------------------    C$1 = &d1[0];
;** 54	-----------------------    C$4 = &b[0];
;** 54	-----------------------    C$3 = &a[0];
;** 54	-----------------------    func1(C$3, C$4, C$1, 40);
;** 56	-----------------------    C$2 = &d2[0];
;** 56	-----------------------    func2(C$3, C$4, C$2, 40);
;** 59	-----------------------    if ( !memcmp(C$1, C$2, 80u) ) goto g2;
           STW     .D2T2   B3,*SP--(16)      ; |51| 
	.line	5
           CALL    .S1     _func1            ; |54| 

           MVK     .S1     (_a-$bss),A4      ; |54| 
||         MVK     .S2     (_d1-$bss),B4     ; |54| 

           ADD     .D2     DP,B4,B9          ; |54| 
||         MVK     .S1     (_b-$bss),A3      ; |54| 

           ADD     .D1X    DP,A4,A7          ; |54| 

           MV      .D1X    B9,A6             ; |54| 
||         ADD     .D2X    DP,A3,B16         ; |54| 
||         MVK     .S2     0x28,B6           ; |54| 

           ADDKPC  .S2     RL0,B3,0          ; |54| 
||         ADD     .D2X    DP,A3,B4          ; |54| 
||         ADD     .D1X    DP,A4,A4          ; |54| 

RL0:       ; CALL OCCURS                     ; |54| 
           MV      .D1     A7,A4             ; |54| 
	.line	7
           CALL    .S1     _func2            ; |56| 
           MVK     .S2     (_d2-$bss),B4     ; |56| 
           ADD     .D2     DP,B4,B8          ; |56| 
           MVK     .S2     0x28,B6           ; |56| 
           ADDKPC  .S2     RL1,B3,0          ; |56| 

           MV      .D2     B16,B4            ; |56| 
||         MV      .D1X    B8,A6             ; |56| 

RL1:       ; CALL OCCURS                     ; |56| 
	.line	10
           CALL    .S1     _memcmp           ; |59| 
           ADDKPC  .S2     RL2,B3,1          ; |59| 
           MV      .D2     B8,B4             ; |59| 
           MV      .D1X    B9,A4             ; |59| 
           MVK     .S1     0x50,A6           ; |59| 
RL2:       ; CALL OCCURS                     ; |59| 
           MV      .D1     A4,A0             ; |59| 
   [!A0]   BNOP    .S1     L7,5              ; |59| 
           ; BRANCH OCCURS                   ; |59| 
;** --------------------------------------------------------------------------*
;** 60	-----------------------    printf((const char *)"Result failure tutor1()\n");
;**	-----------------------g2:
;**  	-----------------------    return;
	.line	11
           CALL    .S1     _printf           ; |60| 
           ADDKPC  .S2     RL3,B3,1          ; |60| 
           MVKL    .S1     SL1+0,A3          ; |60| 
           MVKH    .S1     SL1+0,A3          ; |60| 
           STW     .D2T1   A3,*+SP(4)        ; |60| 
RL3:       ; CALL OCCURS                     ; |60| 
;** --------------------------------------------------------------------------*
L7:    
	.line	14
           LDW     .D2T2   *++SP(16),B3      ; |63| 
           NOP             4
           RETNOP  .S2     B3,5              ; |63| 
           ; BRANCH OCCURS                   ; |63| 
	.endfunc	63,000080000h,16


;******************************************************************************
;* STRINGS                                                                    *
;******************************************************************************
	.sect	".const"
SL1:	.string	"Result failure tutor1()",10,0
;******************************************************************************
;* UNDEFINED EXTERNAL REFERENCES                                              *
;******************************************************************************
	.global	_printf
	.global	_memcmp

;******************************************************************************
;* TYPE INFORMATION                                                           *
;******************************************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -