ARM中B、BL、BX、BLX指令的区别
1、B------跳转指令
跳转指令B使程序跳转到指定的地址执行程序。
例:B 0x1234 ;跳转到绝对地址0x1234处。
2、BL-----带返回的连接跳转
BL指令用于实现子程序调用。子程序的返回可通过将LR寄存器的值复制到PC寄存器来实现。下面的指令可实现子程序返回:(1)、BX R14 (2)、MOV PC,R14
例:BL func ;跳转到子程序func处执行,同时将当前pc值保存到LR中。
3、BX------跳转并切换状态
带状态切换的跳转指令BX使程序跳转到指令中指定的参数Rm指定的地址执行程序。若 Rm 的 bit[0] 为1,切换到 Thumb 指令执行;若 Rm 的 bit[0] 为0,切换到 ARM 指令执行。
指令的语法格式:BX{<cond>} <Rm>
例:BX R0 ;跳转到R0中的地址,如果R0[0]=1,则进入Thumb状态。
4、BLX------带返回的跳转并切换状态
该指令为无条件执行指令。