2

将值加载到 r1 寄存器的地址是如何计算的?

_start:
    ldrh   r1, [pc, #6]

PC 的值 = 8054(ldrh 指令的地址)

根据我的说法,地址的值应该是:PC + 6 = 805A

因此它应该将地址 805A 中的值加载到寄存器 r1 中。

4

1 回答 1

5

这取决于您是处于 ARM 模式还是 Thumb 模式。

对于 ARM 模式:

R15用作基址寄存器时,您必须记住它包含距当前指令地址 8 个字节的地址。

对于拇指模式:

的值PC将比该指令的地址大 4 个字节,但 的位 1PC被强制为 0 以确保它是字对齐的。

于 2013-08-20T09:04:44.243 回答