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

📄 filter.asm

📁 DSP系統設計和BIOS編程及應用實例-書籍光碟範例-第10章
💻 ASM
📖 第 1 页 / 共 3 页
字号:

           B       .S2     B3                ; |39| 
||         LDW     .D2T1   *+SP(4),A10       ; |39| 

           LDW     .D2T1   *++SP(8),A11      ; |39| 
           NOP             4
           ; BRANCH OCCURS                   ; |39| 
	.endfunc	39,000000c00h,8


	.sect	".text"
	.global	_MultSine
	.sym	_MultSine,_MultSine, 32, 2, 0
	.func	42

;******************************************************************************
;* FUNCTION NAME: _MultSine                                                   *
;*                                                                            *
;*   Regs Modified     : A0,A1,A3,A4,A5,B0,B1,B4,B5                           *
;*   Regs Used         : A0,A1,A3,A4,A5,B0,B1,B3,B4,B5,DP                     *
;*   Local Frame Size  : 0 Args + 0 Auto + 0 Save = 0 byte                    *
;******************************************************************************
_MultSine:
;** --------------------------------------------------------------------------*
	.line	2
	.sym	_buffer,4, 19, 17, 32
	.sym	_size,20, 4, 17, 32
	.sym	A$2,0, 4, 4, 32
	.sym	V$0,0, 4, 4, 32
	.sym	_buffer,4, 19, 4, 32
	.sym	_size,20, 4, 4, 32
	.sym	L$1,20, 4, 4, 32
	.sym	U$16,4, 19, 4, 32
	.sym	K$12,3, 19, 4, 32
;** 46	-----------------------    if ( size <= 0 ) goto g7;
	.line	5
           CMPGT   .L2     B4,0,B1           ; |46| 
   [!B1]   B       .S1     L12               ; |46| 
   [ B1]   LDW     .D2T1   *+DP(_j$1),A0
           NOP             4
           ; BRANCH OCCURS                   ; |46| 
;** --------------------------------------------------------------------------*
;**  	-----------------------    V$0 = j;
;**  	-----------------------    U$16 = buffer;
;** 48	-----------------------    L$1 = size;
;**  	-----------------------    K$12 = &sine[0];
;**  	-----------------------    #pragma MUST_ITERATE(1, 1099511627775, 1)
;**	-----------------------g3:
;** 48	-----------------------    A$2 = _mpy(*U$16, K$12[V$0])>>12;
;** 48	-----------------------    *U$16++ = A$2;
;** 48	-----------------------    if ( (++V$0) < 80 ) goto g5;
;** 49	-----------------------    V$0 = 0;
;**	-----------------------g5:
;** 50	-----------------------    if ( --L$1 ) goto g3;
	.line	7
           MVK     .S1     (_sine-$bss),A3
           MV      .D2     B4,B0

           MV      .S2X    A4,B5
||         MVK     .S1     80,A5             ; |48| 
||         ADD     .L1X    DP,A3,A3

;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*
;*      Loop source line               : 46
;*      Loop opening brace source line : 47
;*      Loop closing brace source line : 50
;*      Known Minimum Trip Count         : 1
;*      Known Max Trip Count Factor      : 1
;*      Loop Carried Dependency Bound(^) : 9
;*      Unpartitioned Resource Bound     : 2
;*      Partitioned Resource Bound(*)    : 2
;*      Resource Partition:
;*                                A-side   B-side
;*      .L units                     1        0     
;*      .S units                     1        1     
;*      .D units                     1        2*    
;*      .M units                     1        0     
;*      .X cross paths               1        0     
;*      .T address paths             2*       1     
;*      Long read paths              1        0     
;*      Long write paths             0        0     
;*      Logical  ops (.LS)           0        0     (.L or .S unit)
;*      Addition ops (.LSD)          2        1     (.L or .S or .D unit)
;*      Bound(.L .S .LS)             1        1     
;*      Bound(.L .S .D .LS .LSD)     2*       2*    
;*
;*      Searching for software pipeline schedule at ...
;*         ii = 9  Schedule found with 1 iterations in parallel
;*      done
;*
;*      Loop is interruptible
;*      Collapsed epilog stages     : 0
;*      Collapsed prolog stages     : 0
;*
;*      Minimum safe trip count     : 1
;*----------------------------------------------------------------------------*
L9:    ; PIPED LOOP PROLOG
;** --------------------------------------------------------------------------*
L10:    ; PIPED LOOP KERNEL

           LDH     .D1T1   *+A3[A0],A4       ; |48| 
||         LDH     .D2T2   *B5,B4            ;  ^ |48| 

           NOP             1
   [ B0]   SUB     .D2     B0,1,B0           ; |50| 
   [ B0]   B       .S2     L10               ; |50| 
           NOP             1
           MPY     .M1X    B4,A4,A4          ;  ^ |48| 
           ADD     .D1     1,A0,A0           ; |48| 

           CMPLT   .L1     A0,A5,A1          ; |48| 
||         SHR     .S1     A4,12,A4          ;  ^ |48| 

   [!A1]   ZERO    .D1     A0                ; |49| 
||         STH     .D2T1   A4,*B5++          ;  ^ |48| 

;** --------------------------------------------------------------------------*
L11:    ; PIPED LOOP EPILOG
;** --------------------------------------------------------------------------*
;**  	-----------------------    j = V$0;
;**	-----------------------g7:
;**  	-----------------------    return;
           STW     .D2T1   A0,*+DP(_j$1)
;** --------------------------------------------------------------------------*
L12:    
	.line	10
           B       .S2     B3                ; |51| 
           NOP             5
           ; BRANCH OCCURS                   ; |51| 
	.endfunc	51,000000000h,0


	.sect	".text"
	.global	_ProcBlock
	.sym	_ProcBlock,_ProcBlock, 32, 2, 0
	.func	9

;******************************************************************************
;* FUNCTION NAME: _ProcBlock                                                  *
;*                                                                            *
;*   Regs Modified     : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,B0,B1,B2,  *
;*                           B3,B4,B5,B6,B7,B8,B9,SP                          *
;*   Regs Used         : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,B0,B1,B2,  *
;*                           B3,B4,B5,B6,B7,B8,B9,DP,SP                       *
;*   Local Frame Size  : 0 Args + 0 Auto + 16 Save = 16 byte                  *
;******************************************************************************
_ProcBlock:
;** --------------------------------------------------------------------------*
	.line	2
	.sym	_input,4, 19, 17, 32
	.sym	_output,20, 19, 17, 32
	.sym	_size,6, 4, 17, 32
	.sym	C$1,0, 19, 4, 32
	.sym	_size,10, 4, 4, 32
	.sym	_output,12, 19, 4, 32
	.sym	_input,11, 19, 4, 32
	.sym	_buff,25, 19, 4, 32
;** 12	-----------------------    buff = malloc(size*2u);
;** 14	-----------------------    C$1 = &coeff[0];
;** 14	-----------------------    filter(input, buff, size, &mem1, C$1, 113);
;** 15	-----------------------    MultSine(buff, size);
;** 16	-----------------------    filter(buff, output, size, &mem2, C$1, 113);
;** 17	-----------------------    free((void *)buff);
;** 17	-----------------------    return;
           STW     .D2T2   B3,*SP--(16)      ; |10| 
           STW     .D2T1   A10,*+SP(4)       ; |10| 
           STW     .D2T1   A11,*+SP(8)       ; |10| 
           STW     .D2T1   A12,*+SP(12)      ; |10| 

           MV      .D1     A4,A11
||         MV      .S1     A6,A10
||         MV      .L1X    B4,A12

	.line	4
           B       .S1     _malloc           ; |12| 
           MVKL    .S2     RL0,B3            ; |12| 
           ADD     .D1     A10,A10,A4
           MVKH    .S2     RL0,B3            ; |12| 
           NOP             2
RL0:       ; CALL OCCURS                     ; |12| 
           MV      .S2X    A4,B9
	.line	6
           B       .S1     _filter           ; |14| 
           MVKL    .S2     RL2,B3            ; |14| 
           MVK     .S1     (_mem1-$bss),A0   ; |14| 
           MVK     .S2     0x71,B8           ; |14| 
           MVK     .S1     (_coeff-$bss),A3  ; |14| 

           MV      .D1     A11,A4            ; |14| 
||         MV      .D2     B9,B4             ; |14| 
||         ADD     .L2X    DP,A0,B6
||         ADD     .S1X    DP,A3,A8
||         MV      .L1     A10,A6            ; |14| 
||         MVKH    .S2     RL2,B3            ; |14| 

RL2:       ; CALL OCCURS                     ; |14| 
	.line	7
           B       .S1     _MultSine         ; |15| 
           MVKL    .S2     RL4,B3            ; |15| 
           MV      .L2X    A10,B4            ; |15| 
           MV      .S1X    B9,A4             ; |15| 
           MVKH    .S2     RL4,B3            ; |15| 
           NOP             1
RL4:       ; CALL OCCURS                     ; |15| 
	.line	8
           B       .S1     _filter           ; |16| 
           MVK     .S2     (_mem2-$bss),B4   ; |16| 
           MVKL    .S2     RL6,B3            ; |16| 
           ADD     .D2     DP,B4,B6
           MV      .D1     A10,A6            ; |16| 

           MVKH    .S2     RL6,B3            ; |16| 
||         MV      .S1X    B9,A4             ; |16| 
||         MV      .L2X    A12,B4            ; |16| 

RL6:       ; CALL OCCURS                     ; |16| 
	.line	9
           B       .S1     _free             ; |17| 
           MVKL    .S2     RL8,B3            ; |17| 
           MVKH    .S2     RL8,B3            ; |17| 
           MV      .S1X    B9,A4             ; |17| 
           NOP             2
RL8:       ; CALL OCCURS                     ; |17| 
	.line	10
           LDW     .D2T1   *+SP(8),A11       ; |18| 
           LDW     .D2T1   *+SP(12),A12      ; |18| 
           LDW     .D2T1   *+SP(4),A10       ; |18| 
           LDW     .D2T2   *++SP(16),B3      ; |18| 
           NOP             4
           B       .S2     B3                ; |18| 
           NOP             5
           ; BRANCH OCCURS                   ; |18| 
	.endfunc	18,000081c00h,16


;******************************************************************************
;* UNDEFINED EXTERNAL REFERENCES                                              *
;******************************************************************************
	.global	_malloc
	.global	_free

;******************************************************************************
;* TYPE INFORMATION                                                           *
;******************************************************************************
	.sym	_size_t, 0, 14, 13, 32

⌨️ 快捷键说明

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