ARM指令集
發(fā)布時(shí)間:2008/12/22 0:00:00 訪問(wèn)次數(shù):575
arm指令集可以分為6類(lèi),即跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、程序狀態(tài)寄存器(psr)傳輸指令、load/store指令、協(xié)處理器指令和異常中版產(chǎn)生指令。下面分別對(duì)這6種指令進(jìn)行介紹。
1.跳轉(zhuǎn)指令
在arm中有兩種方式可以實(shí)現(xiàn)程序的跳轉(zhuǎn):一種是刀‘轉(zhuǎn)指令;另一種是直接向pc寄存器(r15)中寫(xiě)入目標(biāo)地址值。
通過(guò)直接向pc寄存器中寫(xiě)入目標(biāo)地址值可以實(shí)現(xiàn)在46b地址空間中任意跳轉(zhuǎn),這種跳轉(zhuǎn)指令又稱為長(zhǎng)跳轉(zhuǎn)。如果在長(zhǎng)跳轉(zhuǎn)指令之前使用mov lr,pc等指令,則可以保存將來(lái)返回的地址值,這樣就實(shí)現(xiàn)了在46b地址空間中的子程序調(diào)用。
在arm版本5及以上的體系中,實(shí)現(xiàn)了arm指令集和thumb指令集的混合使用。指令使用目標(biāo)地址值的bit[0]來(lái)確定目標(biāo)程序的類(lèi)型。bit[0]的值為1時(shí),目標(biāo)程序?yàn)閠humb指令;bit[0]值為0時(shí),目標(biāo)程序?yàn)閍rm指令。
在arm版本5以前的體系中,傳送到pc寄存器中的目標(biāo)地址值的低兩位bits[1∶0]被忽略,跳轉(zhuǎn)指令只能在arm指令集中執(zhí)行,即程序不能從arm狀態(tài)切換到thumb狀態(tài)。非t系列arm版本5體系不含thumb指令,當(dāng)程序試圖切換到thumb狀態(tài)時(shí),將產(chǎn)生未定義指令異常中斷。
arm跳轉(zhuǎn)指令可以從當(dāng)前指令向前或向后的32mb地址空間跳轉(zhuǎn)。這類(lèi)跳轉(zhuǎn)指令有以下4種。
。1)b 跳4專(zhuān)指令
b〔條件) (地址)
b指令屬于arm指令集,是最簡(jiǎn)單的分支指令。一旦遇到一個(gè)b指令,arm處理器將立即跳轉(zhuǎn)到給定的地址,從那里繼續(xù)執(zhí)行。注意:存儲(chǔ)在分支指令中的實(shí)際值是相對(duì)當(dāng)前r15的值的一個(gè)偏移量,而不是一個(gè)絕對(duì)地址。它的值由匯編器來(lái)計(jì)算,是24位有符號(hào)數(shù),左移兩位后有符號(hào)擴(kuò)展為32位,表示的有效偏移位為26位(+/- 32 mb)。
。2)bl 帶返回的跳轉(zhuǎn)指令
bi,〔條件) (地址)
bl指令也屬于arm指令集,是另一個(gè)分支指令。就在分支之前,在寄存器r14中裝載上r15的內(nèi)容,因此可以重新裝載r14到r15中來(lái)返回到這個(gè)分支之后的那個(gè)指令處執(zhí)行,它是子例程的一個(gè)基本但強(qiáng)力的實(shí)現(xiàn)。
(3)blx 帶返回和狀態(tài)切換的跳轉(zhuǎn)指令
blx <地址>
blx指令有兩種格式,第1種格式的blx指令記作blx(1)。blx(1)從arm指令集跳轉(zhuǎn)到指令中指定的目標(biāo)地址,并將程序狀態(tài)切換到thumb狀態(tài),該指令同時(shí)將pc寄存器的內(nèi)容復(fù)制到lr寄存器中。
blx(1)指令屬于無(wú)條件執(zhí)行的指令。
第2種格式的blx指令記作blx(2)。blx(2)指令從arm指令集跳轉(zhuǎn)到指令中指定的目標(biāo)地址,目標(biāo)地址的指令可以是arm指令,也可以是thumb指令。目標(biāo)地址放在指令中的寄存器<dest>中,該地址的bit[0]值為0,目標(biāo)地址處的指令類(lèi)型由cpsr中的t位決定。該指令同時(shí)將pc寄存器的內(nèi)容復(fù)制到lr寄存器中。
。4)bx 帶狀態(tài)切換的跳轉(zhuǎn)指令
bx(條件) (dest)
bx指令跳轉(zhuǎn)到指令中指定的目標(biāo)地址,目標(biāo)地址處的指令可以是arm指令,也可以是thumb指令。目標(biāo)地址值為指令的值和0xfl·ffffff做“與”操作的結(jié)果,目標(biāo)地址處的指令類(lèi)型由寄存器決定。
歡迎轉(zhuǎn)載,信息來(lái)源維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
arm指令集可以分為6類(lèi),即跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、程序狀態(tài)寄存器(psr)傳輸指令、load/store指令、協(xié)處理器指令和異常中版產(chǎn)生指令。下面分別對(duì)這6種指令進(jìn)行介紹。
1.跳轉(zhuǎn)指令
在arm中有兩種方式可以實(shí)現(xiàn)程序的跳轉(zhuǎn):一種是刀‘轉(zhuǎn)指令;另一種是直接向pc寄存器(r15)中寫(xiě)入目標(biāo)地址值。
通過(guò)直接向pc寄存器中寫(xiě)入目標(biāo)地址值可以實(shí)現(xiàn)在46b地址空間中任意跳轉(zhuǎn),這種跳轉(zhuǎn)指令又稱為長(zhǎng)跳轉(zhuǎn)。如果在長(zhǎng)跳轉(zhuǎn)指令之前使用mov lr,pc等指令,則可以保存將來(lái)返回的地址值,這樣就實(shí)現(xiàn)了在46b地址空間中的子程序調(diào)用。
在arm版本5及以上的體系中,實(shí)現(xiàn)了arm指令集和thumb指令集的混合使用。指令使用目標(biāo)地址值的bit[0]來(lái)確定目標(biāo)程序的類(lèi)型。bit[0]的值為1時(shí),目標(biāo)程序?yàn)閠humb指令;bit[0]值為0時(shí),目標(biāo)程序?yàn)閍rm指令。
在arm版本5以前的體系中,傳送到pc寄存器中的目標(biāo)地址值的低兩位bits[1∶0]被忽略,跳轉(zhuǎn)指令只能在arm指令集中執(zhí)行,即程序不能從arm狀態(tài)切換到thumb狀態(tài)。非t系列arm版本5體系不含thumb指令,當(dāng)程序試圖切換到thumb狀態(tài)時(shí),將產(chǎn)生未定義指令異常中斷。
arm跳轉(zhuǎn)指令可以從當(dāng)前指令向前或向后的32mb地址空間跳轉(zhuǎn)。這類(lèi)跳轉(zhuǎn)指令有以下4種。
。1)b 跳4專(zhuān)指令
b〔條件) (地址)
b指令屬于arm指令集,是最簡(jiǎn)單的分支指令。一旦遇到一個(gè)b指令,arm處理器將立即跳轉(zhuǎn)到給定的地址,從那里繼續(xù)執(zhí)行。注意:存儲(chǔ)在分支指令中的實(shí)際值是相對(duì)當(dāng)前r15的值的一個(gè)偏移量,而不是一個(gè)絕對(duì)地址。它的值由匯編器來(lái)計(jì)算,是24位有符號(hào)數(shù),左移兩位后有符號(hào)擴(kuò)展為32位,表示的有效偏移位為26位(+/- 32 mb)。
(2)bl 帶返回的跳轉(zhuǎn)指令
bi,〔條件) (地址)
bl指令也屬于arm指令集,是另一個(gè)分支指令。就在分支之前,在寄存器r14中裝載上r15的內(nèi)容,因此可以重新裝載r14到r15中來(lái)返回到這個(gè)分支之后的那個(gè)指令處執(zhí)行,它是子例程的一個(gè)基本但強(qiáng)力的實(shí)現(xiàn)。
。3)blx 帶返回和狀態(tài)切換的跳轉(zhuǎn)指令
blx <地址>
blx指令有兩種格式,第1種格式的blx指令記作blx(1)。blx(1)從arm指令集跳轉(zhuǎn)到指令中指定的目標(biāo)地址,并將程序狀態(tài)切換到thumb狀態(tài),該指令同時(shí)將pc寄存器的內(nèi)容復(fù)制到lr寄存器中。
blx(1)指令屬于無(wú)條件執(zhí)行的指令。
第2種格式的blx指令記作blx(2)。blx(2)指令從arm指令集跳轉(zhuǎn)到指令中指定的目標(biāo)地址,目標(biāo)地址的指令可以是arm指令,也可以是thumb指令。目標(biāo)地址放在指令中的寄存器<dest>中,該地址的bit[0]值為0,目標(biāo)地址處的指令類(lèi)型由cpsr中的t位決定。該指令同時(shí)將pc寄存器的內(nèi)容復(fù)制到lr寄存器中。
。4)bx 帶狀態(tài)切換的跳轉(zhuǎn)指令
bx(條件) (dest)
bx指令跳轉(zhuǎn)到指令中指定的目標(biāo)地址,目標(biāo)地址處的指令可以是arm指令,也可以是thumb指令。目標(biāo)地址值為指令的值和0xfl·ffffff做“與”操作的結(jié)果,目標(biāo)地址處的指令類(lèi)型由寄存器決定。
歡迎轉(zhuǎn)載,信息來(lái)源維庫(kù)電子市場(chǎng)網(wǎng)(www.dzsc.com)
上一篇:ARM指令介紹
熱門(mén)點(diǎn)擊
- ARM通用寄存器
- FIQ異常的描述
- Viterbi譯碼
- ARM程序狀態(tài)寄存器
- ARM時(shí)序
- ARM乘法指令
- Thumb狀態(tài)下的寄存器
- ARM異常的響應(yīng)及返回
- ARM狀態(tài)寄存器訪問(wèn)指令
- 常用自動(dòng)控制系統(tǒng)設(shè)計(jì)的案例要求和應(yīng)用對(duì)象
推薦技術(shù)資料
- DFRobot—玩的就是
- 如果說(shuō)新車(chē)間的特點(diǎn)是“靈動(dòng)”,F(xiàn)QPF12N60C那么... [詳細(xì)]
- 首款高端大規(guī)模PCB設(shè)計(jì)平臺(tái)UniVista
- Android 和Linux OS工作原理
- TLE9879 SSC模塊與傳
- 雙高精度 RTD 溫度傳感器&
- 16V/12A可調(diào)節(jié)電壓和頻率同步降壓變換器
- NOR Flash、NAND
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究