我已经阅读了许多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,但数字不行。 任何人都可以帮忙吗?
我正在尝试在汇编代码中混合使用ARM和THUMB指令。 例如,在下面的代码中我尝试使用这两种模式: .thumb @ .code 16 .section __TEXT,__text .globl mySymbol1 mySymbol1: …. .arm @ .code 32 .section __TEXT,__text .globl mySymbol2 mySymbol2: … 现在,根据我的理解,当我将这个代码编译成一个库并运行nm时, mysymbol1应该显示为arm和mysymbol2应该显示为拇指, 0000xxxx (__TEXT,__text) external mySymbol1 0000yyyy (__TEXT,__text) external [Thumb] mySymbol2 但是两者都显示为胳膊。 我在这里错过了什么? 我的汇编程序命令是: as -arch armv7 -o ao as