指令
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 互調、異常返回、函數指針跳轉。