2014-11-23 304 views

回答

16

bx代表branch and exchange instruction set这意味着根据要分支到的地址的LSB(最低有效位),处理器将把下一个指令视为ARM或拇指。

作为lr通常保存了返回地址,这意味着这是从一个函数的返回,并且如果LSB的lr是1时,它会在那个地址作为拇指处理代码,否则,它将把它作为臂。

+0

你可能简化这个解释,我对ARM架构的知识并不那么先进。 – user2177940 2014-11-23 02:21:03

+0

https://en.wikipedia.org/wiki/ARM_architecture#Thumb – MByD 2014-11-23 02:36:49

+4

@ user2177940第1部分:模式切换。 ARMv7 CPU工作在两种模式之一(称为ARM或Thumb)中,指令编码方面有所不同(主要是“完整”,但较大的4字节指令与“受限制”但较小的2字节指令)。根据跳转到的地址是偶数还是奇数(这导致分别转换为ARM或Thumb模式),通过'bx/blx' **在通话时间确定**切换到下一个模式。 – 2014-11-23 02:38:42