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

📄 filter.asm

📁 DSP系統設計和BIOS編程及應用實例-書籍光碟範例-第10章
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	.sym	_j,_j$1, 4, 3, 32
;	D:\ti\c6000\cgtools\bin\opt6x.exe -s -O3 C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TI3504_2 C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TI3504_4 -w E:/yinpin/Scram8k_DMA/ 
	.sect	".text"
	.global	_filter
	.sym	_filter,_filter, 32, 2, 0
	.func	21

;******************************************************************************
;* FUNCTION NAME: _filter                                                     *
;*                                                                            *
;*   Regs Modified     : A0,A1,A2,A3,A4,A5,A6,A7,A9,A10,A11,B0,B1,B2,B4,B5,B7,*
;*                           SP                                               *
;*   Regs Used         : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,B0,B1,B2,B3,B4,*
;*                           B5,B6,B7,B8,SP                                   *
;*   Local Frame Size  : 0 Args + 0 Auto + 8 Save = 8 byte                    *
;******************************************************************************
_filter:
;** --------------------------------------------------------------------------*
	.line	2
	.sym	_inp,4, 19, 17, 32
	.sym	_outp,20, 19, 17, 32
	.sym	_size,6, 4, 17, 32
	.sym	_mem,22, 19, 17, 32
	.sym	_coef,8, 19, 17, 32
	.sym	_order,24, 3, 17, 16
	.sym	C$2,21, 3, 4, 16
	.sym	_acc,0, 5, 4, 40
	.sym	_order,24, 3, 4, 16
	.sym	_inp,4, 19, 4, 32
	.sym	_outp,20, 19, 4, 32
	.sym	_size,17, 4, 4, 32
	.sym	_mem,22, 19, 4, 32
	.sym	_coef,8, 19, 4, 32
	.sym	L$2,16, 4, 4, 32
	.sym	L$1,17, 4, 4, 32
	.sym	U$47,6, 19, 4, 32
	.sym	K$45,10, 14, 4, 32
	.sym	U$32,20, 19, 4, 32
	.sym	U$30,3, 19, 4, 32
	.sym	K$18,11, 3, 4, 16
	.sym	K$16,9, 19, 4, 32
	.sym	U$12,7, 19, 4, 32
;** 26	-----------------------    if ( size <= 0 ) goto g8;
           STW     .D2T1   A11,*SP--(8)      ; |22| 
           STW     .D2T1   A10,*+SP(4)       ; |22| 
           MV      .S2X    A6,B1
	.line	6
           CMPGT   .L2     B1,0,B0           ; |26| 
   [!B0]   B       .S1     L8                ; |26| 
   [ B0]   MVK     .S1     0xfffffffe,A10
   [ B0]   MV      .L1X    B4,A6
   [ B0]   ADDAH   .D2     B6,B8,B4
   [ B0]   SUB     .S1     A4,2,A7

   [ B0]   SUB     .L1X    B4,2,A9
|| [ B0]   LDH     .D1T1   *A8,A11

           ; BRANCH OCCURS                   ; |26| 
;** --------------------------------------------------------------------------*
;**  	-----------------------    K$45 = 0xfffffffeu;
;**  	-----------------------    U$12 = &inp[-1];
;**  	-----------------------    K$16 = &mem[order-1];
;**  	-----------------------    K$18 = *coef;
;**  	-----------------------    U$47 = outp;
;** 28	-----------------------    L$1 = size;
;**  	-----------------------    #pragma MUST_ITERATE(1, 1099511627775, 1)
	.line	8
;**	-----------------------g3:
;** 28	-----------------------    *K$16 = *(++U$12);
;** 29	-----------------------    acc = _mpy(*mem, K$18);
;** 31	-----------------------    if ( order < 2 ) goto g7;
           LDH     .D1T1   *++A7,A0          ; |28| 
           NOP             4
;** --------------------------------------------------------------------------*
;**   BEGIN LOOP L1
;** --------------------------------------------------------------------------*
L1:    
           STH     .D1T1   A0,*A9            ; |28| 
	.line	9
           LDH     .D2T2   *B6,B4            ; |29| 
           NOP             4
           MPY     .M1X    B4,A11,A0         ; |29| 
           NOP             1
           SHR     .S1     A0,31,A1          ; |29| 
	.line	11
           CMPLT   .L2     B8,2,B0           ; |31| 
   [ B0]   B       .S1     L7                ; |31| 
   [!B0]   MV      .D2     B6,B4
   [!B0]   ADD     .D1     2,A8,A3
           NOP             3
           ; BRANCH OCCURS                   ; |31| 
;** --------------------------------------------------------------------------*
;**  	-----------------------    U$30 = &coef[1];
;**  	-----------------------    U$32 = mem;
;** 33	-----------------------    L$2 = order-1;
;**  	-----------------------    #pragma MUST_ITERATE(1, 32766, 1)
	.line	13
           CMPGT   .L2     B8,3,B2
   [ B2]   B       .S1     L3
           SUB     .S2     B8,1,B0
   [!B2]   LDH     .D2T2   *++B4,B5          ; |33| 
           NOP             2
   [!B2]   LDH     .D1T1   *A3++,A4          ; |33| 
           ; BRANCH OCCURS  
;** --------------------------------------------------------------------------*
;**	-----------------------g6:
;** 33	-----------------------    C$2 = *(++U$32);
;** 33	-----------------------    acc += _mpy(C$2, *U$30++);
;** 34	-----------------------    U$32[-1] = C$2;
;** 35	-----------------------    if ( --L$2 ) goto g6;
           NOP             4
;** --------------------------------------------------------------------------*
;**   BEGIN LOOP L2
;** --------------------------------------------------------------------------*
L2:    
           MPY     .M1X    B5,A4,A4          ; |33| 
           NOP             1
           ADD     .L1     A4,A1:A0,A1:A0    ; |33| 
	.line	14
           STH     .D2T2   B5,*-B4(2)        ; |34| 
	.line	15
           SUB     .D2     B0,1,B0           ; |35| 
   [ B0]   B       .S1     L2                ; |35| 

   [ B0]   LDH     .D2T2   *++B4,B5          ; |33| 
|| [ B0]   LDH     .D1T1   *A3++,A4          ; |33| 

           NOP             4
           ; BRANCH OCCURS                   ; |35| 
;** --------------------------------------------------------------------------*
           B       .S1     L7
           NOP             5
           ; BRANCH OCCURS  
;** --------------------------------------------------------------------------*
L3:    
           MVC     .S2     CSR,B7
           AND     .S2     -2,B7,B5

           SUB     .D2     B0,3,B0
||         MVC     .S2     B5,CSR            ; interrupts off

;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*
;*      Loop source line               : 31
;*      Loop opening brace source line : 32
;*      Loop closing brace source line : 35
;*      Known Minimum Trip Count         : 1
;*      Known Maximum Trip Count         : 32766
;*      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                     1        0     
;*      .S units                     0        1     
;*      .D units                     1        2*    
;*      .M units                     1        0     
;*      .X cross paths               1        0     
;*      .T address paths             1        2*    
;*      Long read paths              1        1     
;*      Long write paths             1        0     
;*      Logical  ops (.LS)           0        0     (.L or .S unit)
;*      Addition ops (.LSD)          0        1     (.L or .S or .D unit)
;*      Bound(.L .S .LS)             1        1     
;*      Bound(.L .S .D .LS .LSD)     1        2*    
;*
;*      Searching for software pipeline schedule at ...
;*         ii = 2  Schedule found with 4 iterations in parallel
;*      done
;*
;*      Epilog not removed
;*      Collapsed epilog stages     : 0
;*
;*      Prolog not entirely removed
;*      Collapsed prolog stages     : 1
;*
;*      Minimum required memory pad : 0 bytes
;*
;*      For further improvement on this loop, try option -mh6
;*
;*      Minimum safe trip count     : 3
;*----------------------------------------------------------------------------*
L4:    ; PIPED LOOP PROLOG

           LDH     .D1T1   *A3++,A4          ; (P) |33| 
|| [ B0]   B       .S2     L5                ; (P) |35| 
||         LDH     .D2T2   *++B4,B5          ; (P) |33| 

   [ B0]   SUB     .D2     B0,1,B0           ; (P) @|35| 

           LDH     .D1T1   *A3++,A4          ; (P) @|33| 
|| [ B0]   B       .S2     L5                ; (P) @|35| 
||         LDH     .D2T2   *++B4,B5          ; (P) @|33| 

           MVK     .S1     0x1,A2            ; init prolog collapse predicate
|| [ B0]   SUB     .D2     B0,1,B0           ; (P) @@|35| 

;** --------------------------------------------------------------------------*
L5:    ; PIPED LOOP KERNEL

   [ B0]   B       .S2     L5                ; @@|35| 
||         LDH     .D2T2   *++B4,B5          ; @@@|33| 
||         LDH     .D1T1   *A3++,A4          ; @@@|33| 

   [ A2]   SUB     .D1     A2,1,A2           ; 
|| [!A2]   ADD     .L1     A5,A1:A0,A1:A0    ; |33| 
||         STH     .D2T2   B5,*-B4(6)        ; @|34| 
||         MPY     .M1X    B5,A4,A5          ; @|33| 
|| [ B0]   SUB     .S2     B0,1,B0           ; @@@|35| 

;** --------------------------------------------------------------------------*
L6:    ; PIPED LOOP EPILOG
           NOP             1

           STH     .D2T2   B5,*-B4(4)        ; (E) @@|34| 
||         MPY     .M1X    B5,A4,A3          ; (E) @@|33| 
||         ADD     .L1     A5,A1:A0,A1:A0    ; (E) @|33| 

;** --------------------------------------------------------------------------*
           MVC     .S2     B7,CSR            ; interrupts on

           STH     .D2T2   B5,*-B4(2)        ; (E) @@@|34| 
||         ADD     .L1     A3,A1:A0,A1:A0    ; (E) @@|33| 
||         MPY     .M1X    B5,A4,A3          ; (E) @@@|33| 

           NOP             1
           ADD     .L1     A3,A1:A0,A1:A0    ; (E) @@@|33| 
;** --------------------------------------------------------------------------*
L7:    
;**	-----------------------g7:
;** 37	-----------------------    *U$47++ = (unsigned)(acc>>16)&K$45;
;** 38	-----------------------    if ( --L$1 ) goto g3;
;**	-----------------------g8:
;**  	-----------------------    return;
	.line	17
           SHR     .S1     A1:A0,16,A1:A0    ; |37| 
           AND     .S1     A10,A0,A0         ; |37| 
           STH     .D1T1   A0,*A6++          ; |37| 
	.line	18
           SUB     .D2     B1,1,B1           ; |38| 
   [ B1]   B       .S1     L1                ; |38| 
   [ B1]   LDH     .D1T1   *++A7,A0          ; |28| 
           NOP             4
           ; BRANCH OCCURS                   ; |38| 
;** --------------------------------------------------------------------------*
L8:    
	.line	19

⌨️ 快捷键说明

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