ARM指令集(2)
1.跳轉(zhuǎn)指令
在ARM中有兩種方式可以實現(xiàn)程序的跳轉(zhuǎn):一種是刀‘轉(zhuǎn)指令;另一種是直接向PC寄存器(R15)中寫入目標(biāo)地址值。
通過直接向PC寄存器中寫入目標(biāo)地址值可以實現(xiàn)在46B地址空間中任意跳轉(zhuǎn),這種跳轉(zhuǎn)指令又稱為長跳轉(zhuǎn)。如果在長跳轉(zhuǎn)指令之前使用MOV LR,PC等指令,則可以保存將來返回的地址值,這樣就實現(xiàn)了在46B地址空間中的子程序調(diào)用。
在ARM版本5及以上的體系中,實現(xiàn)了ARM指令集和Thumb指令集的混合使用。指令使用目標(biāo)地址值的bit[0]來確定目標(biāo)程序的類型。bit[0]的值為1時,目標(biāo)程序為Thumb指令;bit[0]值為0時,目標(biāo)程序為ARM指令。
在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)時,將產(chǎn)生未定義指令異常中斷。
ARM跳轉(zhuǎn)指令可以從當(dāng)前指令向前或向后的32MB地址空間跳轉(zhuǎn)。這類跳轉(zhuǎn)指令有以下4種。
標(biāo)簽:
ARM
指令集
上傳時間:
2013-11-20
上傳用戶:妄想演繹師