工具与软件:
您好!
我目前使用的是 MSP430 (MSP430X)器件、遇到了一个关于如何 解释指令代码0x03EF (ADDA R3、R15)的问题。 具体而言、我的 C 代码为:
volatile unsigned int* p = START; p += 1;
编译后、汇编输出会显示:
ADDA #2, R15
然而、对于这条指令、ELF 文件中的实际机器码是0x03EF、一些反汇编器会将其显示为 ADDA R3、R15。
我知道 R2/R3用作 MSP430上的常数发生器寄存器、并且 AS 位中的某些寻址模式会使 R3代表立即值#2。 但是、我将尝试将其与 SLAU367 (MSP430x5xx/MSP430x6xx 系列用户指南)中的文档进行协调、特别是表4-2、其中列出了"间接 寄存器模式"以从 R3获取值#2、而第4.5.2.6和4.6.1章将0x0* E*机器代码指令描述为"寄存器模式"。 (Adda Rsrc Rdst)
我怀疑这是预期的行为、我可能只是忽略了相关文档。 如果这是 Adda (和 Suba)的例外情况、这是有意义的、因为在这些指令中从 R3获取零是毫无意义的。
如果可以提供说明这种特殊行为的指导或文档参考、我将不胜感激。
提前感谢您、
关


