我对 asm 的东西有点陌生。查看从 C 为 TI 的 C28x CPU 生成的 asm 并获得指令
MOVL *+XAR4[0],ACC
我知道它是一个长操作数移动指令,它获取累加器中的值并将其放入...指向的位置。什么?
XAR4 是辅助寄存器 4,但是“+”和“[0]”有什么作用?他们会需要额外的周期吗?
最佳答案
摘自 “TMS320C28x DSP CPU 和指令集”的第 5.6 节“间接寻址模式” 引用指南”:
*+XARn[3bit]
32bitDataAddr(31:0) = XARn + 3bit
Note: The immediate value is treated as an unsigned 3-bit value.
因此它会将ACC
存储在XAR4
(具体为XAR4+0
)指向的内存位置。
当 3 位偏移量为 0 时,可以将其省略:
The assembler also accepts ”*XARn” as an addressing mode.
This is the same encoding as the ”*+XARn[0]” mode
关于assembly - 用 + 和 [] 间接寻址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15833330/