|
发表于 2019-3-11 23:23:20
|
显示全部楼层
都是外国人发明的算法,仿照写个程序应该不难,我以前仿老外算法自己写了个CORDIC的程序,不到30条指令和一个表。
下面这个就是以前写的CORDIC算法的程序,当时想做个扫频的东西,网上抄了这个算法。
- cordicbiao:
- .int 0x00003243, 0x00001DAC, 0x00000FAD, 0x000007F5, 0x000003FE, 0x000001FF, 0x000000FF, 0x0000007F, 0x0000003F, 0x0000001F, 0x0000000F, 0x00000007, 0x00000003, 0x00000001, 0x00000000, 0x0000000
- cordic: @ 入 R0 , 出R12
- @ 16384 * 3.1415927/2 =25734
- @ x= 0x26dd
- @ r1=x,r2=y,r0=z,r4=d,r5=k,r6=cordic_mabiao
- push {r0-r7,lr}
- movs r5, # 0
- mov r2, r5
- mov r4, r5
- ldr r1, = 0x26dd
- cordicxunhuan: @ 循环
- asrs r4, r0, # 15
- @ x
- mov r7, r2
- asrs r2, r5
- eors r2, r4
- subs r2, r4
- subs r3, r1, r2
- @ y
- mov r6, r1
- asrs r1, r5
- eors r1, r4
- subs r1, r4
- adds r7, r1
- @ z
- ldr r6, = cordicbiao
- lsls r2, r5, # 2
- ldr r1, [r6, r2]
- eors r1, r4
- subs r1, r4
- subs r0, r1
- mov r12, r7 @ 正弦
- mov r1, r3 @
- mov r2, r7
- adds r5, # 1
- cmp r5, # 16
- bne cordicxunhuan
- pop {r0-r7,pc}
复制代码 |
|