ARM指令 BCC什么意思? 5
BCC是指CPSR寄存器条件标志位为0时的跳转。结合CMP R3, R1,意思是比较R3 R1寄存器,当相等时跳转到环测试。因为CMP指令减去两个值并在CPSR中设置条件标志位。
扩展资料:
当ARM跳转指令从当前指令向前或向后的32MB地址空间跳转时,这类跳转指令有以下4种:
(1)B 跳转指令
B〔条件) (地址)
B指令属于ARM指令集,是最简单的分支指令。一旦遇到一个B指令,ARM处理器将立即跳转到给定的地址,从那里继续执行。
(2)BL 带返回的跳转指令
BI,〔条件) (地址)
BL指令也属于ARM指令集,是另一个分支指令。就在分支之前,在寄存器R14中装载上R15的内容,因此可以重新装载R14到R15中来返回到这个分支之后的那个指令处执行,它是子例程的一个基本但强力的实现。
(3)BLX 带返回和状态切换的跳转指令
BLX <地址>
BLX指令有两种格式,第1种格式的BLX指令记作BLX(1)。BLX(1)从ARM指令集跳转到指令中指定的目标地址,并将程序状态切换到Thumb状态,该指令同时将PC寄存器的内容复制到LR寄存器中。
BLX(1)指令属于无条件执行的指令。
第2种格式的BLX指令记作BLX(2)。BLX(2)指令从ARM指令集跳转到指令中指定的目标地址,目标地址的指令可以是ARM指令,也可以是Thumb指令。目标地址放在指令中的寄存器<dest>中,该地址的bit[0]值为0,目标地址处的指令类型由CPSR中的T位决定。
(4)BX 带状态切换的跳转指令
BX(条件) (dest)
BX指令跳转到指令中指定的目标地址,目标地址处的指令可以是ARM指令,也可以是Thumb指令。目标地址值为指令的值和0xFFFFFFFE做“与”操作的结果,目标地址处的指令类型由寄存器决定。
参考资料:百度百科-ARM指令集
BCC 是指当CPSR寄存器条件标志位为0时跳转。
结合上一句CMP R3,R1,则是指比较R3 R1寄存器,当相等时跳转到Looptest。因为CMP指令是将两值相减并设置CPSR中的条件标志位。
扩展资料:
arm跳转指令
通过直接向PC寄存器中写入目标地址值可以实现在4GB地址空间中任意跳转,这种跳转指令又称为长跳转。
如果在长跳转指令之前使用MOV LR,PC等指令,则可以保存将来返回的地址值,这样就实现了在4GB地址空间中的子程序调用。
在ARM版本5及以上的体系中,实现了ARM指令集和Thumb指令集的混合使用。指令使用目标地址值的bit[0]来确定目标程序的类型。
bit[0]的值为1时,目标程序为Thumb指令;bit[0]值为0时,目标程序为ARM指令。
在ARM版本5以前的体系中,传送到PC寄存器中的目标地址值的低两位bits[1∶0]被忽略,跳转指令只能在ARM指令集中执行,即程序不能从ARM状态切换到Thumb状态。
非T系列ARM版本5体系不含Thumb指令,当程序试图切换到Thumb状态时,将产生未定义指令异常中断。
参考资料来源:百度百科-ARM指令集
结合上一句CMP R3,R1,则是指比较R3 R1寄存器,当相等时跳转到Looptest
因为CMP指令是将两值相减并设置CPSR中的条件标志位
即当CPSR中的标志位C被清零( CC - C clear),发生跳转。但是C不代表相等,而是代表是否产生借位。
当执行到CMP R3, R1时候,硬件会用R3-R1,如果R3 < R1,便发生借位,C被清0,才会跳转至Looptest。
望采纳。
Branch if C Clear ,
如果C Clear了就跳转到Looptest。