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

📄 fft2.asm

📁 VC33进行FFT变换c源码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        cmpi3     *+ar0(ir0),r0         ; |118| 
        blt       L23                   ; |118| 
;*      Branch Occurs to L23            ; |118| 
L26:        
	.line	5
        ldiu      1,r0                  ; |104| 
        addi      *+fp(1),r0            ; |104| 
        sti       r0,*+fp(1)            ; |104| 
        cmpi      8,r0                  ; |104| 
        blt       L16                   ; |104| 
;*      Branch Occurs to L16            ; |104| 
L27:        
	.line	30
;----------------------------------------------------------------------
; 129 | for ( i=0; i<256; i++ )                                                
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |129| 
        sti       r0,*+fp(1)            ; |129| 
        cmpi      256,r0                ; |129| 
        ldiu      1,r1                  ; |132| 
        bge       L29                   ; |129| 
;*      Branch Occurs to L29            ; |129| 
L28:        
	.line	32
;----------------------------------------------------------------------
; 131 | fft_out[2*i]=fft_in[bitrev_index[i]];                                  
;----------------------------------------------------------------------
        ldiu      *+fp(1),ir1           ; |131| 
        ldiu      @CL23,ar1             ; |131| 
        ldiu      @CL9,ar0              ; |131| 
        ldiu      ir1,ir0               ; |131| 
        ldiu      @CL20,ar2             ; |131| 
        ldiu      *+ar1(ir1),ir1        ; |131| 
        mpyi      2,ir0                 ; |131| 
        ldfu      *+ar0(ir1),f0         ; |131| 
        stf       f0,*+ar2(ir0)         ; |131| 
	.line	33
;----------------------------------------------------------------------
; 132 | fft_out[2*i+1]=fft_in[bitrev_index[i]+1];                              
;----------------------------------------------------------------------
        ldiu      *+fp(1),ir0           ; |132| 
        ldiu      ir0,ir1               ; |132| 
        mpyi      2,ir0                 ; |132| 
        addi3     r1,*+ar1(ir1),ir1     ; |132| 
        addi      1,ir0                 ; |132| 
        ldfu      *+ar0(ir1),f0         ; |132| 
        stf       f0,*+ar2(ir0)         ; |132| 
	.line	30
        ldiu      1,r0                  ; |129| 
        addi      *+fp(1),r0            ; |129| 
        sti       r0,*+fp(1)            ; |129| 
        cmpi      256,r0                ; |129| 
        blt       L28                   ; |129| 
;*      Branch Occurs to L28            ; |129| 
L29:        
	.line	36
                                        ; Begin Epilog Code
        ldiu      *-fp(1),r1
        ldiu      *fp,fp
                                        ; Restore SOE Registers
        pop       ar7
        pop       ar6
        pop       ar5
        pop       ar4
                                        ; Unallocate the Frame
        subi      11,sp
        bu        r1
;*      Branch Occurs to r1 
	.endfunc	135,00000f000h,9


	.sect	 ".text"

	.global	_ifft
	.sym	_ifft,_ifft,32,2,0
	.func	136
;******************************************************************************
;* FUNCTION NAME: _ifft                                                       *
;*                                                                            *
;*   Architecture       : TMS320C33                                           *
;*   Calling Convention : TI Standard Register Parameters                     *
;*   Function Uses Regs : f0,r0,f1,r1,f2,r2,f3,r3,ar0,ar1,ar2,ar4,ar5,ar6,ar7,*
;*                        ir0,ir1,st,rs,re                                    *
;*   Regs Saved         : ar4,ar5,ar6,ar7                                     *
;*   Stack Frame        : Full (w/ debug)                                     *
;*   Total Frame Size   : 2 Call + 0 Parm + 9 Auto + 4 SOE = 15 words         *
;******************************************************************************
_ifft:
	.sym	_i,1,4,1,32
	.sym	_j,2,4,1,32
	.sym	_k,3,4,1,32
	.sym	_local0,4,4,1,32
	.sym	_local1,5,4,1,32
	.sym	_win0,6,4,1,32
	.sym	_win1,7,4,1,32
	.sym	_win2,8,4,1,32
	.sym	_win3,9,4,1,32
	.line	1
;----------------------------------------------------------------------
; 136 | void ifft(void)                                                        
; 138 |    int i,j,k,local0,local1,win0,win1,win2,win3;                        
;----------------------------------------------------------------------
        push      fp
        ldiu      sp,fp
        addi      9,sp
        push      ar4
        push      ar5
        push      ar6
        push      ar7
	.line	4
;----------------------------------------------------------------------
; 139 | for (i=0;i<8;i++)                                                      
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |139| 
        sti       r0,*+fp(1)            ; |139| 
        cmpi      8,r0                  ; |139| 
        bge       L43                   ; |139| 
;*      Branch Occurs to L43            ; |139| 
L32:        
	.line	5
;----------------------------------------------------------------------
; 140 | if ((i!=curse[i]))                                                     
;----------------------------------------------------------------------
        ldiu      *+fp(1),ir0           ; |140| 
        ldiu      @CL14,ar0             ; |140| 
        ldiu      ir0,r0                ; |140| 
        cmpi3     *+ar0(ir0),r0         ; |140| 
        beq       L38                   ; |140| 
;*      Branch Occurs to L38            ; |140| 
	.line	6
;----------------------------------------------------------------------
; 141 | for (k=0;k<i_k[i];k++)                                                 
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |141| 
        sti       r0,*+fp(3)            ; |141| 
        ldiu      @CL15,ar0             ; |141| 
        cmpi3     *+ar0(ir0),r0         ; |141| 
        bge       L42                   ; |141| 
;*      Branch Occurs to L42            ; |141| 
L34:        
	.line	7
;----------------------------------------------------------------------
; 142 | for (j=0;j<mid[i];j++)                                                 
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |142| 
        sti       r0,*+fp(2)            ; |142| 
        ldiu      @CL16,ar0             ; |142| 
        ldiu      *+fp(1),ir0           ; |142| 
        cmpi3     *+ar0(ir0),r0         ; |142| 
        bge       L36                   ; |142| 
;*      Branch Occurs to L36            ; |142| 
L35:        
	.line	9
;----------------------------------------------------------------------
; 144 | Pset=j*inner[i];                                                       
;----------------------------------------------------------------------
        ldiu      *+fp(1),ir0           ; |144| 
        ldiu      @CL17,ar0             ; |144| 
        ldiu      *+fp(2),r0            ; |144| 
        mpyi      *+ar0(ir0),r0         ; |144| 
        sti       r0,@_Pset+0           ; |144| 
	.line	10
;----------------------------------------------------------------------
; 145 | local0=2*j+k*mid2[i];local1=local0+1; win0=local0+mid1[i];win1=local1+m
;     | id1[i];                                                                
;----------------------------------------------------------------------
        ldiu      *+fp(2),r1            ; |145| 
        ldiu      *+fp(3),r0            ; |145| 
        ldiu      @CL18,ar0             ; |145| 
        mpyi      2,r1                  ; |145| 
        mpyi      *+ar0(ir0),r0         ; |145| 
        addi3     r0,r1,r0              ; |145| 
        sti       r0,*+fp(4)            ; |145| 
        ldiu      1,r0                  ; |145| 
        addi      *+fp(4),r0            ; |145| 
        sti       r0,*+fp(5)            ; |145| 
        ldiu      @CL19,ar0             ; |145| 
        ldiu      *+ar0(ir0),r0         ; |145| 
        addi      *+fp(4),r0            ; |145| 
        sti       r0,*+fp(6)            ; |145| 
        ldiu      *+ar0(ir0),r0         ; |145| 
        addi      *+fp(5),r0            ; |145| 
        sti       r0,*+fp(7)            ; |145| 
	.line	11
;----------------------------------------------------------------------
; 146 | fft_in[local0]=fft_out[local0]+fft_out[win0];                          
;----------------------------------------------------------------------
        ldiu      @CL9,ar2              ; |146| 
        ldiu      @CL20,ar1             ; |146| 
        ldiu      @CL20,ar0             ; |146| 
        ldiu      *+fp(4),ir0           ; |146| 
        ldiu      *+fp(6),ir1           ; |146| 
        addf3     *+ar0(ir0),*+ar1(ir1),f1 ; |146| 
        stf       f1,*+ar2(ir0)         ; |146| 
	.line	12
;----------------------------------------------------------------------
; 147 | fft_in[local1]=fft_out[local1]+fft_out[win1];                          
;----------------------------------------------------------------------
        ldiu      *+fp(5),ir0           ; |147| 
        ldiu      *+fp(7),ir1           ; |147| 
        addf3     *+ar0(ir0),*+ar1(ir1),f1 ; |147| 
        stf       f1,*+ar2(ir0)         ; |147| 
	.line	13
;----------------------------------------------------------------------
; 148 | fft_in[win0]=(fft_out[local0]-fft_out[win0])*ctab[Pset]-(fft_out[local1
;     | ]-fft_out[win1])*stab[Pset];                                           
;----------------------------------------------------------------------
        ldiu      *+fp(4),ir0           ; |148| 
        ldiu      *+fp(6),ir1           ; |148| 
        ldiu      @CL20,ar4             ; |148| 
        ldiu      @CL20,ar5             ; |148| 
        ldiu      *+fp(5),r2            ; |148| 
        ldiu      @CL22,ar2             ; |148| 
        ldiu      *+fp(7),r3            ; |148| 
        ldiu      @CL21,ar6             ; |148| 
        subf3     *+ar1(ir1),*+ar0(ir0),f1 ; |148| 
        ldiu      @_Pset+0,r0           ; |148| 
        ldiu      @CL9,ar0              ; |148| 
        ldiu      r2,ir0                ; |148| 
        ldiu      r3,ir1                ; |148| 
        subf3     *+ar5(ir1),*+ar4(ir0),f2 ; |148| 
        ldiu      r0,ir0                ; |148| 
        ldiu      r0,ir1                ; |148| 
        mpyf3     *+ar6(ir0),f1,f0      ; |148| 
        mpyf3     *+ar2(ir1),f2,f1      ; |148| 
        ldiu      *+fp(6),ir0           ; |148| 
        subrf     f0,f1                 ; |148| 
        stf       f1,*+ar0(ir0)         ; |148| 
	.line	14
;----------------------------------------------------------------------
; 149 | fft_in[win1]=(fft_out[local1]-fft_out[win1])*ctab[Pset]+(fft_out[local0
;     | ]-fft_out[win0])*stab[Pset];                                           
; 152 | else                                                                   
;----------------------------------------------------------------------
        ldiu      @CL20,ar2             ; |149| 
        ldiu      *+fp(4),ir1           ; |149| 
        ldiu      *+fp(6),ir0           ; |149| 
        ldiu      @CL22,ar0             ; |149| 
        ldiu      *+fp(7),r2            ; |149| 
        ldiu      @CL20,ar7             ; |149| 
        ldiu      @CL20,ar6             ; |149| 
        ldiu      @CL21,ar4             ; |149| 
        ldiu      *+fp(5),r3            ; |149| 
        ldiu      @_Pset+0,r1           ; |149| 
        ldiu      @CL9,ar5              ; |149| 
        subf3     *+ar2(ir0),*+ar1(ir1),f0 ; |149| 
        ldiu      r2,ir0                ; |149| 
        ldiu      r3,ir1                ; |149| 
        subf3     *+ar6(ir0),*+ar7(ir1),f2 ; |149| 
        ldiu      r1,ir0                ; |149| 
        mpyf3     *+ar0(ir0),f0,f0      ; |149| 
        mpyf3     *+ar4(ir0),f2,f1      ; |149| 
        ldiu      *+fp(7),ir0           ; |149| 
        addf3     f1,f0,f0              ; |149| 
        stf       f0,*+ar5(ir0)         ; |149| 
	.line	7
        ldiu      1,r0                  ; |142| 
        addi      *+fp(2),r0            ; |142| 
        sti       r0,*+fp(2)            ; |142| 
        ldiu      @CL16,ar0             ; |142| 
        ldiu      *+fp(1),ir0           ; |142| 
        cmpi3     *+ar0(ir0),r0         ; |142| 
        blt       L35                   ; |142| 
;*      Branch Occurs to L35            ; |142| 
L36:        
	.line	6
        ldiu      1,r0                  ; |141| 
        addi      *+fp(3),r0            ; |141| 
        sti       r0,*+fp(3)            ; |141| 
        ldiu      @CL15,ar0             ; |141| 
        ldiu      *+fp(1),ir0           ; |141| 
        cmpi3     *+ar0(ir0),r0         ; |141| 
        blt       L34                   ; |141| 
;*      Branch Occurs to L34            ; |141| 
        bu        L42                   ; |135| 

⌨️ 快捷键说明

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