嵌⼊式cmp指令的判断标志位_刘帅嵌⼊式系统-当前程序状态
寄存器(cpsr)
CPSR的格式如下图。SPSR格式与CPSR格式相同。
1、条件标志位
N(Negative)、Z(Zero)、C(Carry)及V(oVerflow)统称为条件标志位。⼤部分的ARM指令可以根据CPSR中的这些条件标志位选择性地执⾏。各条件标志位的具体含义如下。
N:当两个补码表⽰的有符号整数运算时,N=1表⽰运算的结果为负数;N=0表⽰结果为整数或零。
Z:Z=1表⽰运算结果为零;Z=0表⽰运算结果不为零。对于CMP指令,Z=1表⽰进⾏⽐较的两个数⼤⼩相等。
C:下⾯介绍4种情况C的设置⽅法。
--在加法指令中(包括⽐较指令CMN),当结果产⽣了进位,则C=1,表⽰⽆符号数运算发⽣上溢出;其他情况下C=0。
--在剑法指令中(包括⽐较指令CMP),当运算中发⽣借位,则C=0,表⽰⽆符号数运算发⽣下溢出;其他情况下C=1。
--对于包含移位操作的⾮加/减发运算指令,C中包含最后⼀次被溢出的位的数值。
--对于其他⾮加/减法运算指令,C位的值通常不变。
V:对于加/减法运算指令,当操作数和运算结果为⼆进制的补码表⽰的带符号数时,V=1表⽰符号位溢出。通常其他的指令不影响V位,具体可参考各指令的说明。
2、CPSR中的控制位
CPSR的低8位I、F、T及M[4:0]统称为控制位。当异常发⽣时,这些位发⽣变化,在特权级的处理器模式下,软件可以修改这些控制位。
1)中断禁⽌位
-- I=1时,禁⽌IRQ中断。
-- F=1时,禁⽌FIQ中断。
2)T控制位
T控制位⽤于控制指令执⾏的状态,级说明本指令时ARM指令,还是Thumb指令。但对于不同版本的ARM处理器,T控制位的含义不同。对于ARMv3和ATMv4的⾮T系列版本的处理器,没有ARM状态和Thumb状态切换,固T=0。
比较指令cmp怎么用对于ARMv4以及更⾼的版本的T系列处理器,T含义如下:
-T=0表⽰执⾏ARM指令。
-T=1表⽰执⾏Thumb指令。
对于ARMv5以及更⾼的、版本的⾮T系列的ARM处理器,T含义如下:
-T=0表⽰执⾏ARM指令。
-T=1表⽰强制下⼀条执⾏的指令产⽣未定义指令中断。
3)M控制位,可参考上图所⽰。
3、CPSR中的其他位
CPSR中的其他位⽤于将来ARM版本的扩展。应⽤软件不要操作这些位,以免与ARM将来版本的扩展冲突。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。