ARM组件中的程序计数器

时间:2013-08-20 08:56:38

标签: assembly arm

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

_start:
    ldrh   r1, [pc, #6]

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

据我所知,地址的值应为:PC + 6 = 805A

所以它应该将地址805A的值加载到寄存器r1。

1 个答案:

答案 0 :(得分:5)

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

对于ARM模式:

  

使用R15作为基址寄存器时,必须记住它包含8字节的地址   从当前指令的地址开始。

对于Thumb模式:

  

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