一、Arm指令條件碼和條件助記符
二、跳轉指令B
1、作用
跳轉指令B使程序跳轉到指定的地址執行程序(跳轉范圍是PC-32MB到PC+32MB)
2、指令格式(注:B后面如果有條件,條件就是緊跟在B后面,沒有空格)
B{<condition>} <target_address>
3、參數說明
3.1、<condition>:它指示指令在什么條件下執行,可省略
3.2、<target_address>:指令跳轉的目標地址,指令通過下面的方法計算目標地址:
A、將24位帶符號的補碼立即數符號擴展到32位
B、將擴展后的32位立即數左移兩位
C、將得到的值加到PC寄存器中,即得到跳轉的目標地址
三、帶連接的跳轉指令BL
1、作用
帶連接的跳轉指令BL將下一條指令的地址拷貝到r14(即返回地址連接寄存器LR)寄存器中,然后跳轉到指定地址運行程序。
2、語法格式
BL{<condition>} <target_address>
3、參數說明同B指令
四、帶狀態切換的跳轉指令BX
1、作用
使程序跳轉到指令中指定的參數Rm指定的地址執行程序
2、語法格式
BX{<condition>} <Rm>
3、參數說明
<Rm> 包含跳轉指令的目標地址,
五、帶狀態切換的連接跳轉指令BLX
1、作用
用於使程序跳轉到Thumb狀態或從Thumb狀態返回,該指令為無條件執行指令,並用分支寄存器的最低位來更新CPSR中的T位,將返回地址寫入到連接寄存器LR中。
2、語法格式
BLX{<condition>} <target_address>
3、參數說明
<target_address>為指令的跳轉目標地址,該地址根據以下規則計算
A、將指令指定的24位偏移量進行符號擴展,形成32位立即數
B、將結果左移兩位
C、位H(bit[24])加到結果地址的第一位(bit[1])
D、將結果累加到程序計數器PC中