溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ARM指令跳轉(zhuǎn)范圍多大

發(fā)布時間:2021-11-20 17:16:10 來源:億速云 閱讀:445 作者:小新 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹了ARM指令跳轉(zhuǎn)范圍多大,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

ARM指令跳轉(zhuǎn)范圍


我們知道ARM的跳轉(zhuǎn)指令(B)是有范圍限制的(±32MB),但很多情況下不能保證所有的異常處理函數(shù)都定位在向量表的32MB 范圍內(nèi),需要大于32MB 的長跳轉(zhuǎn),而且因為向量表空間的限制只能由一條指令完成。這可以通過下面二種方法實現(xiàn)。

一)立即數(shù)跳轉(zhuǎn)

(a) MOV PC, #imme_value

把目標(biāo)地址直接賦給PC 寄存器。
但是這條指令受格式限制并不能處理任意立即數(shù),只有當(dāng)這個立即數(shù)能夠表示為一個8-bit 數(shù)值通過循環(huán)右移偶數(shù)位而得到,才是合法的。例如:

MOV PC, #0x30000000 ;//是合法的,因為0x300000000 可以通過0x03 循環(huán)右移4 位而得到。而 MOV PC, #30003000 ;//就是非法指令。

二)相對地址跳轉(zhuǎn)

(b) LDR PC, [PC+offset]

把目標(biāo)地址先存儲在某一個合適的地址空間,然后把這個存儲器單元上的32位數(shù)據(jù)傳送給PC 來實現(xiàn)跳轉(zhuǎn)。
這種方法對目標(biāo)地址值沒有要求,可以是任意有效地址。但是存儲目標(biāo)地址的存儲器單元必須在當(dāng)前指令的±4KB 空間范圍內(nèi)。
注意在計算指令中引用的offset 數(shù)值的時候,要考慮處理器流水線中指令預(yù)取對PC 值的影響。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“ARM指令跳轉(zhuǎn)范圍多大”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

arm
AI