assembly - 用 + 和 [] 间接寻址

标签 assembly addressing-mode

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

相关文章:

assembly - 使用 GAS AT&T 指令为引导扇区计算填充长度?

assembly - NASM 中的两个数字相除

assembly - 在 x86 汇编的 AT&T 语法中,括号中的逗号是什么意思?

操作码中的汇编段

assembly - endbr64 指令实际上做了什么?

c - Mips 汇编转换为 C

assembly - 从 XMM 迁移到 YMM

assembly - 将常量字节值移动到 %ebx 时出错

assembly - fs和gs寄存器如何计算有效地址

assembly - 最初的 16 位 x86 中是否有 8 位内存寻址?