B (Branch)
- 用于无条件跳转到目标地址。
- 不会保存返回地址。
- 只能跳转到当前指令集(ARM 或 Thumb)。
- 主要用于执行流程的分支和跳转。
例如
B target_address @ 无条件跳转到 target_address
BL (Branch with Link):
- 用于调用子程序,并将返回地址(当前指令的下一条指令地址)保存到链接寄存器(LR,R14)。
- 只能跳转到当前指令集(ARM 或 Thumb)。
- 主要用于子程序调用,以便可以从子程序返回。
例如
BL target_function @ 调用子程序 target_function,并将返回地址保存到 LR
BX (Branch and Exchange):
- 用于跳转到寄存器中的地址,并可能切换指令集。
- 跳转的同时,根据目标地址的最低位选择指令集:0 表示 ARM 指令集,1 表示 Thumb 指令集。
- 主要用于返回或切换指令集。
例如
BX Rm @ 跳转到寄存器 Rm 指定的地址,并可能切换指令集
<