📄 fft.s
字号:
AREA fft_fun,CODE,READONLY
N equ 128
N1 equ 7
sf equ 30
import getsin
import getcos
export fft1
export ar1
export ai1
row equ 128
col equ 128
fft1
STMFD sp!,{R0-R12,R14}
str r1,ar1
str r2,ai1
mov R3, #N ;R3=a
mov R0, #1 ;R0=c
loopA
cmp R0, #7
bgt loopAend
mov R3, R3, lsr #1 ;a/=2
mov R1, #0 ;R1=f
loopA1
cmp R1, R3
bge loopA1end
stmfd sp!, {R0-R11,LR} ;R1-R11不改变,R12为返回值
bl getsin
ldmfd sp!, {R0-R11,LR} ;R1-R11不改变,R12为返回值
str R12, si ;si赋值
stmfd sp!, {R0-R11,LR}
bl getcos
ldmfd sp!, {R0-R11,LR}
str R12, co ;co赋值
mov R2, R3, lsl #1 ;R2=g
loopA1a
cmp R2, #N
bgt loopA1aend
sub R4, R2, R3, lsl #1 ;R4=h
add R4, R4, R1
add R5, R4, R3 ;R5=j
ldr R6, ar1
ldr R7, [R6,R4,lsl #2] ;R7=*(ar+h)
ldr R8, [R6,R5,lsl #2] ;R8=*(ar+j)
sub R9, R7, R8
str R9, k ;R9=k
add R9, R7, R8
str R9, [R6,R4,lsl #2]
ldr R6, ai1
ldr R7, [R6,R4,lsl #2] ;R7=*(ai+h)
ldr R8, [R6,R5,lsl #2] ;R8=*(ai+j)
sub R9, R7, R8
str R9, i ;R9=i
add R9, R7, R8
str R9, [R6,R4,lsl #2]
ldr R6, co
ldr R7, k
smull R8, R9, R6, R7
ldr R6, si
ldr R7, i
smlal R8, R9, R6, R7
ldr R6, ar1
mov R9, R9, lsl #32-sf ;缩放
orr R9, R9, R8, lsr #sf ;缩放
str R9, [R6,R5,lsl #2]
ldr R6, co
ldr R7, i
smull R8, R9, R6, R7
ldr R6, si
ldr R7, k
smull R10,R11,R6, R7
sbc R8, R8, R10
sub R9, R9, R11
ldr R6, ai1
mov R9, R9, lsl #32-sf ;缩放
orr R9, R9, R8, lsr #sf ;缩放
str R9, [R6,R5,lsl #2]
add R2, R2, R3, lsl #1
b loopA1a
; cmp R2, #N
; ble loopA1a
loopA1aend
add R1, R1, #1
b loopA1
loopA1end
add R0, R0, #1
b loopA
loopAend
mov R0, #0 ;R0=m
mov R1, #N/2 ;R1=p
ldr R2, =N-1 ;R2=q
mov R3, #0 ;R3=r
loopB
cmp R3, R2
bge loopBend
cmp R3, R0
bge local1
ldr R4, ar1
ldr R5, [R4,R3,lsl #2]
ldr R6, [R4,R0,lsl #2]
str R5, [R4,R0,lsl #2]
str R6, [R4,R3,lsl #2]
ldr R4, ai1
ldr R5, [R4,R3,lsl #2]
ldr R6, [R4,R0,lsl #2]
str R5, [R4,R0,lsl #2]
str R6, [R4,R3,lsl #2]
local1
mov R4, R1 ;R4=s
loopB1
cmp R4, R0
bgt loopB1end
sub R0, R0, R4
mov R4, R4, lsr #1
b loopB1
loopB1end
add R0, R0, R4
add R3, R3, #1
b loopB
loopBend
;;;;;;;;;??????????????
nop
;;;;;;;;;;;;;;;??????????????
stop
LDMFD sp!,{R0-R12,pc}
ar1 % 4
ai1 % 4
k % 4
i % 4
co % 4
si % 4
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -