blx(blx是什么意思)

第二种格式的BLX指令记作BLX(2)。BLX(2)指令从ARM指令集跳转到指定的目标地址,目标地址的指令可以是ARM指令,也可以是Thumb指令。目标地址放在指令中的寄存器<Rm>中,该地址的bit[0]值为0,目标地址处的指令类型由CPSR中的T位决定。该指令同时将PC寄存器的内容复制到LR寄存器中。

指令的编码格式

指令的语法格式

BLX{<cond>} <Rm>

其中:

<cond>为指令执行的条件码。当<cond>忽略时,指令为无条件执行。<Rm>寄存器中为跳转的目标地址。当<Rm>寄存器的bit[0]值为0时,目标地址处的指令为ARM指令;当<Rm>寄存器的bit[0]值为1时,目标处的指令为Thumb指令。当<Rm>寄存器为R15时,会产生不可预期的结果。

指令操作的伪代码

if ConditionPassed(cond) then LR = address of the instruction after the BLX instruction T Flag = Rm[0] PC = Rm AND 0xFFFFFFFE

指令的使用

当Rm[1:0]=0b10时,由于ARM指令是字对齐的,这时会产生不可预料的结果。