请教关于 pc 寄存器的问题


请教一下大佬,这里的两句代码,
MOV R0, #0x1AD82
ADD R0, PC

这个地方 把 R0 + PC 的意义是什么。 求大佬别嫌弃。 :joy:

相对PC进行寻址

我明白差不多是这么个意思,但是我不太理解,这个寻址不是应该相对方法的起始地址进行寻址么,他这样寻址相当于加了两遍方法的起始地址呀。
这个地方的 0x1AD82 是 ARM 计算出来的一个结果,还是固定的方法地址.?
不知道大佬明白我的意思了没。。。:sweat_smile:

32位下,当执行ADD R0, PC的时候,其实PC内的地址是0x1AD82,selRef_isEditing - 0x14d82 计算出来的是偏移,偏移加上当前PC,找到selRef_isEditing 这个SEL的地址。
ADD R0,PC ====> R0 = R0 + PC

不知是否正确,可能有出入,等张总批评

32位下, Thumb 是 +4, ARM 是 +8, 从图中可以看出来是 Thumb 指令.

(总的来说, ARM 下指令很烦/恶心

多谢指教:kissing_heart:

多谢两位大佬 。