'B{cond} <target_address> '分支指令 - 类似于goto
{} 代表可有可无,<>代表缺少就报错,cond为指令执行的条件码,target_address为指令跳转的目标地址。
'BL{cond} <target_address> '相对跳转指令 - 类似于函数调用
跳转范围限制±32M,PC=PC±32M
【L】决定由硬件自动保存下调指令的返回地址到lr,用于函数调用
// B和BL指令均可跳转到指令中的目标地址。-地址相关码/地址无关码
'BX{cond} <Rm>' 绝对跳转,4G范围
BLX
【X】带状态切换的分支跳转
b 无条件跳转,不考虑回来的问题,不会根据LR的值进行返回
bl 带链接的无条件跳转; 在跳转时会把下一条指令的地址装载到lr寄存器中,以方便cpu最终能回来
bx 带状态切换的无条件跳转
blx 带链接和状态切换的无条件跳转
b loc_地址
bne, beq
注1:bl指令的偏移量不是相对于正在执行的那条指令,而是相对于预取指令-三级流水线
注2:bl命令,最大寻址空间为±32M,访问其他内存通过ldr指令
注3:进入子函数,通过栈保存返回地址+通用寄存器的值
b.w # .w的意思是告诉编译器,这条指令采用32bit编码
bne.n