fft_main.s

来自「realview22.rar」· S 代码 · 共 88 行

S
88
字号
;//
;// $Copyright: 
;// ----------------------------------------------------------------
;// This confidential and proprietary software may be used only as
;// authorised by a licensing agreement from ARM Limited
;//   (C) COPYRIGHT 2000,2002 ARM Limited
;//       ALL RIGHTS RESERVED
;// The entire notice above must be reproduced on all authorised
;// copies and copies may only be made to the extent permitted
;// by a licensing agreement from ARM Limited.
;// ----------------------------------------------------------------
;// File:     fft_main.s,v
;// Revision: 1.6
;// ----------------------------------------------------------------
;// $
;//
;// Optimised ARM assembler multi-radix FFT
;//
;// The actual FFT algorithm is contained in the following header:

        INCLUDE fft_main.h
        
;// We now implement some instantiations of the algorithm macro

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                                                                ;
;  FFT EXAMPLE                                                   ;
;                                                                ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


        MACRO
        GENERATE_FFT_FUNCTION $flags
        ; first work out a readable function name
        ; based on the flags
        FFT_OPTIONS_STRING $flags, name

        ; Example use of the GENERATE_FFT macro follows
        ;
        ; Entry:
        ;   r0 = input array
        ;   r1 = output array
        ;   r2 = number of points in FFT
        ;   r3 = pre-scale shift
        ;
        ; Exit:
        ;   r0 = 0 if successful
        ;      = 1 if table too small
        ;
        EXPORT FFT_$name
FFT_$name
        STMFD   sp!, {r4-r11, r14}
        IF "$radix"="4O"
tablename SETS "$qname$coeforder._8"
        ELSE
tablename SETS "$qname$coeforder._4"    
        ENDIF
        IMPORT  s_$tablename
        LDR     lr, =s_$tablename
        LDR     lr,[lr]
        CMP     N, lr
        MOVGT   r0, #1
        LDMGTFD sp!, {r4-r11, pc}
        GENERATE_FFT $flags
        MOV     r0, #0
        LDMFD   sp!, {r4-r11, pc}
        LTORG
        MEND
                
        AREA FFTCODE, CODE, READONLY
        
        GENERATE_FFT_FUNCTION FFT_16bit+FFT_RADIX4   +FFT_FORWARD
        GENERATE_FFT_FUNCTION FFT_16bit+FFT_RADIX4   +FFT_INVERSE
        GENERATE_FFT_FUNCTION FFT_16bit+FFT_RADIX4_8F+FFT_FORWARD
        GENERATE_FFT_FUNCTION FFT_16bit+FFT_RADIX4_8F+FFT_INVERSE
        
        GENERATE_FFT_FUNCTION FFT_32bit+FFT_RADIX4   +FFT_FORWARD
        GENERATE_FFT_FUNCTION FFT_32bit+FFT_RADIX4   +FFT_INVERSE
        GENERATE_FFT_FUNCTION FFT_32bit+FFT_RADIX4_8F+FFT_FORWARD
        GENERATE_FFT_FUNCTION FFT_32bit+FFT_RADIX4_8F+FFT_INVERSE
        
        GENERATE_FFT_FUNCTION FFT_32bit+FFT_RADIX4   +FFT_INVERSE+FFT_REAL
        GENERATE_FFT_FUNCTION FFT_16bit+FFT_RADIX4   +FFT_FORWARD+FFT_REAL
        GENERATE_FFT_FUNCTION FFT_32bit+FFT_RADIX4_8F+FFT_FORWARD+FFT_REAL
        GENERATE_FFT_FUNCTION FFT_16bit+FFT_RADIX4_8F+FFT_INVERSE+FFT_REAL

        END

⌨️ 快捷键说明

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