希望你能帮助我。我有一些asm代码与一个不熟悉的指令,我已经搜索但无法找到这种语法的示例。继承人的指示
ld 16,r3,r5
和
ld -1,*+ar5,r2 ; PRE-GAIN: -1 to reverse SD doubling
现在我知道它将r3加载到r5中,因为r5用于块的其余部分,但第一个参数是什么? 我认为它可能是一个乘法,但我有另一个其他指令,其中第一个参数是0。
我必须指出,该架构是一个专有的32位定点音频dsp ,它是非常古老的代码,所以我再也无法联系制造该芯片的公司。
请帮忙。
更多代码
calc:
ld 16,r3,r5
ldi #coef_update_2,paer
rptb #Son_F_Loop
ld 0,*+ar4,r2
ld 0,*+ar5,r4
sub r4,r2
mpy r5,r2,r0
coef_update_2:
add r0,r4
st 0,r4,*+ar6
jmp #STEPING_volume,u,0
答案 0 :(得分:1)
我以前遇到过类似的事情。不确定架构是否相同,但我会猜到:
"LD sft, Rx, Ry"
其中(Rx << sft) -> Ry
。 sft
的负数会将转换更改为>>
答案 1 :(得分:0)
如果您有源代码,那么很容易找到。通过谷歌搜索,我发现了很多相关的结果。虽然我不知道ld和ldi属于什么架构,但它可能属于TMS320芯片线。我查看了手册,但找不到ldi,虽然我可以看到许多其他寄存器和指令
在AR4上面的代码中,AR5是低部分或XAR4,XAR5和mpy是一个乘法指令,相当奇怪的命名。 RPTB是“无条件地重复指令”
http://lina.faculty.asu.edu/realdsp/Manuals/C55xInstructionSet.pdf
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/TMS320C3x_002fC4x-Options.html
http://www.elec.canterbury.ac.nz/c4x/doc/c4x-tools.html
http://ptolemy.eecs.berkeley.edu/~johnr/papers/pdf/c30course.pdf
关于谷歌的一些关于此的书:
Real-Time Digital Signal Processing: Fundamentals, Implementations and Applications
有关TI文档http://www.ti.com.cn/cn/lit/ug/sprueo2a/sprueo2a.pdf
的更多细节编辑:
我发现了许多ldi示例,但它们都有2个操作数。唯一存在3的情况是其中一个在括号()
ldi @_y,ar0
ldi 0,ar2
ldi 4,ir0
ldi ar2,ir1
ldi *+ar0(ir1),r7
ldi *ar2++(ir0)b,r6