8
我似乎無法理解bx lr的作用,以及它與bl(標籤)的不同之處。我知道bl(標籤)將該函數的返回地址存儲在鏈接寄存器中,但我不知道bx lr是什麼。bx lr在ARM彙編語言中做了什麼?
我似乎無法理解bx lr的作用,以及它與bl(標籤)的不同之處。我知道bl(標籤)將該函數的返回地址存儲在鏈接寄存器中,但我不知道bx lr是什麼。bx lr在ARM彙編語言中做了什麼?
bx
代表branch and exchange instruction set這意味着根據要分支到的地址的LSB(最低有效位),處理器將把下一個指令視爲ARM或拇指。
作爲lr
通常保存了返回地址,這意味着這是從一個函數的返回,並且如果LSB的lr
是1時,它會在那個地址作爲拇指處理代碼,否則,它將把它作爲臂。
你可能簡化這個解釋,我對ARM架構的知識並不那麼先進。 – user2177940 2014-11-23 02:21:03
https://en.wikipedia.org/wiki/ARM_architecture#Thumb – MByD 2014-11-23 02:36:49
@ user2177940第1部分:模式切換。 ARMv7 CPU工作在兩種模式之一(稱爲ARM或Thumb)中,指令編碼方面有所不同(主要是「完整」,但較大的4字節指令與「受限制」但較小的2字節指令)。根據跳轉到的地址是偶數還是奇數(這導致分別轉換爲ARM或Thumb模式),通過'bx/blx' **在通話時間確定**切換到下一個模式。 – 2014-11-23 02:38:42