首页 > 代码库 > CPSR和SPSR中各个位的含义

CPSR和SPSR中各个位的含义

技术分享
N:负数标志位。如果目标寄存器中的有符号数为负数,则N=1,否则N=0。
Z:零标志位。如果目标寄存器中的数为0,则N=1,否则N=1。
C:进位标志位。有以下3种情况
      1、无符号加法运算和CMN指令,如果产生进位,则C=1,否则C=0;
      2、无符号减法运算和CMP指令,如果产生借位,则C=0,否则C=1
      3、进行移位操作的时候,C中保存最后一位移出的值。
说明:当一条指令中同时含有算术运算指令和移位指令时,影响C的值是算术运算而不是移位操
          作。
V:溢出标志位。进行有符号运算时如果发生错误,则V=1,否则V=0。
    
    一些指令如CMN、TEQ等会无条件的刷新CPSR中的条件标志位,其他指令必须要在指令后面加上S后缀才会改变CPSR中的条件标志位。
 
I:IRQ中断禁止位。I=1代表禁止IRQ中断,I=0代表允许IRQ中断。
F:FIQ中断禁止位。F=1代表禁止FIQ中断,F=0代表允许FIQ中断。
    这里和51单片机中的中断使能位有点小差别,51中的是中断使能位,所以为1的时候应该是中断使能,即允许中断。而这里是中断禁止位,为1的时候应该是禁止中断。
 
T:这一位只在ARMv4T指令集版本及以上才有效。因为ARMv4版本及以下都不支持Thumb指
     令集。在支持Thumb指令集的处理器中,T=0表示处于ARM状态,T=1表示处于Thumb状态。
 
M[4:0]:用于控制7种模式位。
技术分享
技术分享

CPSR和SPSR中各个位的含义