1、关于B(跳转指令)与BL(带返回的跳转指令):
B指令与BL指令均能使指令跳转到目标地址,两个指令和目标地址处的指令都属于ARM指令集。二者也都可以根据CPSR中条件标志位的值和指令中的执行条件决定是否执行跳转操作。二者不同的是,B指令只会执行跳转操作;BL指令在跳转的同时还会将PC寄存器的值保存到LR寄存器中。
指令的编码格式:
指令的语法格式:B{L}{<cond>}<target_address>
其中:
● L决定是否保存返回地址。但有L时,当前PC寄存器的值会保存到LR寄存器中;当没有L时,指令只会跳转,当前PC值不会保存到LR寄存器中;
● <cond>为指令执行的条件码;
● <target_address>为指令跳转的目标地址。这个目标地址的计算方法是:将指令中的24位带符号的补码立即数扩展为32位(扩展其符号位);将此32位数左移两位;将得到的值加到PC寄存器中,即得到跳转的目标地址。由这种计算方法可知,跳转的范围大致为-32M~+32M。
<