ARM分支指令

ARM处理器使用的分支指令有B、BL、BX、BLX,各指令区别如下:

1、B:Branch,无条件跳转。

通过将PC的值设置为<address>来指示下条指令的地址,这是一种永久性分支,不会再返回。

该指令主要用于循环中,或者将程序的控制权交给另一部分代码。

……

B fwd

MOV r0, r0 ;这条指令将不会得到执行

fwd:

2、BL:Branch with Link,带链接的跳转。

将PC的值设置为下条指令的地址,并将BL指令后的地址存放到LR中,从而在子程序执行完成之后返回到原来的位置。

……

BL calc

……

calc: ADD r0, r1, r2

BX lr ;返回到先前的位置

3、BX:Branch with eXchange,跳转并交换。

允许程序在ARM状态和Thumb状态之间切换

4、BLX:Branch with Link and eXchange,带链接和交换的跳转。

该指令可以进行ARM/Thumb状态切换,并更新LR寄存器,允许返回到先前的位置。

原文地址:https://www.cnblogs.com/caidi/p/14446252.html