第二种格式的BLX指令记作BLX(2)。BLX(2)指令从ARM指令集跳转到指定的目标地址,目标地址的指令可以是ARM指令,也可以是Thumb指令。目标地址放在指令中的寄存器中,该地址的bit[0]值为0,目标地址处的指令类型由CPSR中的T位决定。该指令同时将PC寄存器的内容复制到LR寄存器中。
指令的编码格式
指令的语法格式
BLX{}
其中:
为指令执行的条件码。当忽略时,指令为无条件执行。寄存器中为跳转的目标地址。当寄存器的bit[0]值为0时,目标地址处的指令为ARM指令;当寄存器的bit[0]值为1时,目标处的指令为Thumb指令。当寄存器为R15时,会产生不可预期的结果。
指令操作的伪代码
if ConditionPassed(cond) thenLR = address of the instruction after the BLX instructionT Flag = Rm[0]PC = Rm AND 0xFFFFFFFE
指令的使用
当Rm[1:0]=0b10时,由于ARM指令是字对齐的,这时会产生不可预料的结果。
如果觉得《刘帅嵌入式系统-BLX(2)》对你有帮助,请点赞、收藏,并留下你的观点哦!