2014-11-23 305 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