我已经阅读了大量的ARM文档,但仍然有困难解码BLX指令。以下是两个例子:
__text:0000347C 02 F0 B2 ED BLX _objc_msgSend
__text:0000469C 01 F0 A2 EC BLX _objc_msgSend
这两个都应该指向同一个位置,即虚拟地址0x5FE4,如下所示:
__symbolstub1:00005FE4 38 F0 9F E5 LDR PC, =__imp__objc_msgSend
然而,我无法确定使用指令字节从上述两个地址(0x347C和0x469C)得出的计算方式。根据ARM文档,它应该是一个相对跳转,使用右移2位,但数字不匹配。
有人能帮忙吗?