如何计算将值加载到r1寄存器中的地址?
_start:
ldrh r1, [pc, #6]
PC = 8054(ldrh指令的地址)的值
据我所知,地址的值应为:PC + 6 = 805A
所以它应该将地址805A的值加载到寄存器r1。
答案 0 :(得分:5)
这取决于您是处于ARM还是Thumb模式。
对于ARM模式:
使用
R15
作为基址寄存器时,必须记住它包含8字节的地址 从当前指令的地址开始。
对于Thumb模式:
PC
的值比该指令的地址大4个字节,但是比特PC
中的1个被强制为0以确保它是单词对齐的。