首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

ARM BX 指令跳轉地址與狀態切換詳解

     編輯:程式設計疑難解答

指令

MOV R6, #0x12000000
BX R6

解析

  • `BX Rn`:分支交換,跳轉至 `Rn` 存儲的地址,**並根據 `Rn[0]`(最低位)決定處理器狀態**: - `Rn[0] == 0` → **ARM 狀態**(32 位指令集)。 - `Rn[0] == 1` → **Thumb 狀態**(16/32 位混合指令集)。

本例

`0x12000000` 二進制最低位為 `0`,故 **切換到 ARM 狀態**,跳轉執行地址 `0x12000000`(實際執行地址為 `0x12000000 & ~1 = 0x12000000`)。

注意

  • 若需切換到 Thumb,地址值須設最低位為 1(如 `0x12000001`)。
  • `BX` 常用於 ARM/Thumb 互調、異常返回、函數指針跳轉。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved