我对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

10-06 05:49