Thumb指令集之: Thumb跳转指令
11.3.5带返回链接的无条件跳转指令BLX(2)
(1)编码格式
带返回链接的无条件跳转指令BLX(2)的编码格式如图11.6所示。
图11.6BLX(2)指令的编码格式
该BLX(2)指令用于ARM和Thumb子程序间的相互调用。程序状态字的T标志位根据目的寄存器的bit[0]位而改变。
(2)指令的语法格式
BLXRm>
其中Rm>为目标地址寄存器,r0~r14寄存器均可以做为目标地址寄存器。
注意 |
如果在此指令中使用r15作为目的寄存器,指令的执行结果不可预知。 |
此指令只在ARMv5版本以上指令集中被支持。
(3)指令操作的伪代码
LR=(addressoftheinstructionafterthisBLX)|1
TFlag=Rm[0]
PC=Rm[31:1]1
11.3.6Thumb指令集中跳转指令举例
下面的例子程序综合使用了各种跳转指令,通过该例可以对Thumb状态下程序的非连续执行有更深入的了解。
Blabel ;无条件跳转到Label地址
BCClabel ;如果进位标志为0,则跳转
BEQlabel ;如果零标准位置1,则跳转
BLfunc ;子程序调用
Func
…
… ;子程序体
MOVPC,LR ;子程序返回
BXr12 ;跳转到r12寄存器中保存的地址
在执行此例中的BXr12时,如果r12的bit[0]=0,则处理器进入ARM状态执行,否则继续执行Thumb代码。
评论