1.18.ARM汇编指令集6之跳转指令

来源:互联网 发布:编程开发培训机构 编辑:程序博客网 时间:2024/05/21 22:21

ARM汇编指令之跳转指令:B & BL & BX

在ARM中有两种方式可以实现程序的跳转,一种是使用跳转指令直接跳转,另一种则是直接向PC寄存器赋值实现跳转。跳转指令有跳转指令B,带链接的跳转指令BL,带状态切换的跳转指令BX。



* B

跳转指令,跳转到指定的地址执行程序。

指令格式:

B{cond}  label

eg:

b waita      ; 跳转到waita标号处

b 0x1234   ; 跳转到绝对地址0x1234处

注:跳转指令跳转的范围限定在当前指令的±32Mb。


* BL

带链接的跳转指令,指令将下一条指令的地址拷贝到R14(即LR)链接寄存器中,然后跳转到指定地址运行程序。

指令格式:

BL{cond} label

eg:

bl delay

注:跳转指令BL限定范围同样也是±32Mb,而且一般用于子程序的调用,调用完之后可以将LR寄存器的值赋值给PC,以让程序继续回到调用之前指令的下一条指令继续执行。


* BX

带状态切换的跳转指令,跳转到Rm指定的地址执行程序,若Rm的bit0为1,则跳转时自动将CPSR中的标志T置位,即把目标地址的代码解释为Thumb代码;若Rm的bit0为0,则跳转时自动将CPSR中的标志T复位,即把目标地址的代码解释为ARM代码。

指令格式:

BX{cond} Rm

eg:

adrl r0,ThumbFun+1

bx r0                          ; 跳转到R0指定地址,并根据R0的最低位来切换处理器状态