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

📄 fft2.asm

📁 VC33进行FFT变换c源码
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	.line	26
;----------------------------------------------------------------------
;  74 | if(point==256)                                                         
;----------------------------------------------------------------------
        ldiu      @_point+0,r0          ; |74| 
        cmpi      256,r0                ; |74| 
        bne       L4                    ; |74| 
;*      Branch Occurs to L4             ; |74| 
	.line	28
;----------------------------------------------------------------------
;  76 | point=0;                                                               
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |76| 
        sti       r0,@_point+0          ; |76| 
	.line	29
;----------------------------------------------------------------------
;  77 | for(i=0;i<256;i++)                                                     
;----------------------------------------------------------------------
        sti       r0,@_i+0              ; |77| 
        cmpi      256,r0                ; |77| 
        bge       L7                    ; |77| 
;*      Branch Occurs to L7             ; |77| 
L6:        
	.line	30
;----------------------------------------------------------------------
;  78 | output[i]=fft_in[i]/256;                                               
;----------------------------------------------------------------------
        ldfu      @CL10,f0              ; |78| 
        ldiu      @_i+0,ir0             ; |78| 
        ldiu      @CL9,ar0              ; |78| 
        ldiu      @CL8,ar1              ; |78| 
        ldiu      ir0,ir1               ; |78| 
        mpyf3     *+ar0(ir0),f0,f1      ; |78| 
        negf      f1,f0                 ; |78| 
        fix       f0,r0                 ; |78| 
        fix       f1,r1                 ; |78| 
        negi      r0,r0                 ; |78| 
        ldile     r0,r1                 ; |78| 
        sti       r1,*+ar1(ir1)         ; |78| 
	.line	29
        ldiu      1,r0                  ; |77| 
        addi      @_i+0,r0              ; |77| 
        sti       r0,@_i+0              ; |77| 
        cmpi      256,r0                ; |77| 
        blt       L6                    ; |77| 
;*      Branch Occurs to L6             ; |77| 
L7:        
	.line	31
;----------------------------------------------------------------------
;  79 | for(i=0;i<512;i++)                                                     
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |79| 
        sti       r0,@_i+0              ; |79| 
        cmpi      512,r0                ; |79| 
        bge       L9                    ; |79| 
;*      Branch Occurs to L9             ; |79| 
L8:        
	.line	32
;----------------------------------------------------------------------
;  80 | fft_in[i]=input[i];                                                    
;----------------------------------------------------------------------
        ldiu      @_i+0,ir1             ; |80| 
        ldiu      @CL11,ar1             ; |80| 
        ldiu      @CL9,ar0              ; |80| 
        ldiu      ir1,ir0               ; |80| 
        float     *+ar1(ir1),f0         ; |80| 
        stf       f0,*+ar0(ir0)         ; |80| 
	.line	31
        ldiu      1,r0                  ; |79| 
        addi      @_i+0,r0              ; |79| 
        sti       r0,@_i+0              ; |79| 
        cmpi      512,r0                ; |79| 
        blt       L8                    ; |79| 
;*      Branch Occurs to L8             ; |79| 
L9:        
	.line	33
;----------------------------------------------------------------------
;  81 | fft();                                                                 
;----------------------------------------------------------------------
        call      _fft                  ; |81| 
                                        ; |81| Call Occurs
	.line	34
;----------------------------------------------------------------------
;  82 | ifft();                                                                
;----------------------------------------------------------------------
        call      _ifft                 ; |82| 
                                        ; |82| Call Occurs
	.line	36
        bu        L4                    ; |84| 
;*      Branch Occurs to L4             ; |84| 
	.endfunc	84,000000000h,0


	.sect	 ".text"

	.global	_adfifo_int
	.sym	_adfifo_int,_adfifo_int,32,2,0
	.func	85
;******************************************************************************
;* FUNCTION NAME: _adfifo_int                                                 *
;*                                                                            *
;*   Architecture       : TMS320C33                                           *
;*   Calling Convention : TI Standard Register Parameters                     *
;*   Function Uses Regs : r0,ar0,ir0                                          *
;*   Regs Saved         : f0,r0,ar0,ir0                                       *
;*   Stack Frame        : Full (w/ debug)                                     *
;*   Total Frame Size   : 2 Call + 0 Parm + 1 Auto + 4 SOE = 7 words          *
;******************************************************************************
_adfifo_int:
	.sym	_k,1,4,1,32
	.line	1
;----------------------------------------------------------------------
;  85 | interrupt void adfifo_int(void)                                        
;  86 | {int k;                                                                
;----------------------------------------------------------------------
        push      st
        push      fp
        ldiu      sp,fp
        addi      1,sp
        push      r0
        pushf     f0
        push      ar0
        push      ir0
	.line	4
;----------------------------------------------------------------------
;  88 | buffer=AD_CS_ADDR;                                                     
;----------------------------------------------------------------------
        ldiu      @CL12,ar0             ; |88| 
        ldiu      *ar0,r0               ; |88| 
        sti       r0,@_buffer+0         ; |88| 
	.line	5
;----------------------------------------------------------------------
;  89 | buffer=buffer&0x0FFF;                                                  
;----------------------------------------------------------------------
        ldiu      4095,r0               ; |89| 
        and       @_buffer+0,r0         ; |89| 
        sti       r0,@_buffer+0         ; |89| 
	.line	6
;----------------------------------------------------------------------
;  90 | buffer=buffer+0x0800;                                                  
;----------------------------------------------------------------------
        ldiu      2048,r0               ; |90| 
        addi      @_buffer+0,r0         ; |90| 
        sti       r0,@_buffer+0         ; |90| 
	.line	7
;----------------------------------------------------------------------
;  91 | k=point*2;                                                             
;----------------------------------------------------------------------
        ldiu      @_point+0,r0          ; |91| 
        mpyi      2,r0                  ; |91| 
        sti       r0,*+fp(1)            ; |91| 
	.line	8
;----------------------------------------------------------------------
;  92 | input[k]=buffer;                                                       
;----------------------------------------------------------------------
        ldiu      @CL11,ar0             ; |92| 
        ldiu      r0,ir0                ; |92| 
        ldiu      @_buffer+0,r0         ; |92| 
        sti       r0,*+ar0(ir0)         ; |92| 
	.line	9
;----------------------------------------------------------------------
;  93 | input[k+1]=0;                                                          
;----------------------------------------------------------------------
        ldiu      1,ir0                 ; |93| 
        addi      *+fp(1),ir0           ; |93| 
        ldiu      0,r0                  ; |93| 
        sti       r0,*+ar0(ir0)         ; |93| 
	.line	10
;----------------------------------------------------------------------
;  94 | buffer=output[point];                                                  
;----------------------------------------------------------------------
        ldiu      @_point+0,ir0         ; |94| 
        ldiu      @CL8,ar0              ; |94| 
        ldiu      *+ar0(ir0),r0         ; |94| 
        sti       r0,@_buffer+0         ; |94| 
	.line	11
;----------------------------------------------------------------------
;  95 | DAC0=buffer;                                                           
;----------------------------------------------------------------------
        ldiu      @CL13,ar0             ; |95| 
        sti       r0,*ar0               ; |95| 
	.line	12
;----------------------------------------------------------------------
;  96 | point++;                                                               
;----------------------------------------------------------------------
        ldiu      1,r0                  ; |96| 
        addi      @_point+0,r0          ; |96| 
        sti       r0,@_point+0          ; |96| 
	.line	13
                                        ; Begin Epilog Code
                                        ; Restore SOE Registers
        pop       ir0
        pop       ar0
        popf      f0
        pop       r0
                                        ; Unallocate the Frame
        subi      1,sp
        pop       fp
        pop       st
        reti
                                        	; Return From Interrupt
	.endfunc	97,000010101h,1


	.sect	 ".text"

	.global	_fft
	.sym	_fft,_fft,32,2,0
	.func	100
;******************************************************************************
;* FUNCTION NAME: _fft                                                        *
;*                                                                            *
;*   Architecture       : TMS320C33                                           *
;*   Calling Convention : TI Standard Register Parameters                     *
;*   Function Uses Regs : f0,r0,f1,r1,f2,r2,r3,ar0,ar1,ar2,ar4,ar5,ar6,ar7,   *
;*                        ir0,ir1,st,rs                                       *
;*   Regs Saved         : ar4,ar5,ar6,ar7                                     *
;*   Stack Frame        : Full (w/ debug)                                     *
;*   Total Frame Size   : 2 Call + 0 Parm + 9 Auto + 4 SOE = 15 words         *
;******************************************************************************
_fft:
	.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
;----------------------------------------------------------------------
; 100 | void fft(void)                                                         
; 102 |   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	5
;----------------------------------------------------------------------
; 104 | for (i=0;i<8;i++)                                                      
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |104| 
        sti       r0,*+fp(1)            ; |104| 
        cmpi      8,r0                  ; |104| 
        bge       L27                   ; |104| 
;*      Branch Occurs to L27            ; |104| 
L16:        
	.line	6
;----------------------------------------------------------------------
; 105 | if ((i==curse[i]))                                                     
;----------------------------------------------------------------------
        ldiu      *+fp(1),ir0           ; |105| 
        ldiu      @CL14,ar0             ; |105| 
        ldiu      ir0,r0                ; |105| 
        cmpi3     *+ar0(ir0),r0         ; |105| 
        bne       L22                   ; |105| 
;*      Branch Occurs to L22            ; |105| 
	.line	7
;----------------------------------------------------------------------
; 106 | for (k=0;k<i_k[i];k++)                                                 
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |106| 
        sti       r0,*+fp(3)            ; |106| 
        ldiu      @CL15,ar0             ; |106| 
        cmpi3     *+ar0(ir0),r0         ; |106| 
        bge       L26                   ; |106| 
;*      Branch Occurs to L26            ; |106| 
L18:        
	.line	8
;----------------------------------------------------------------------

⌨️ 快捷键说明

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