arm core中寄存器CPSR的每一位的具体意义

来源:互联网 发布:淘宝能卖香烟吗 编辑:程序博客网 时间:2024/06/04 18:54

有什么错误希望大家指出来,一起学习;


CPSR是32位寄存器,各位的状态:
        31 30 29 28 27 25            26  24 23           20  19    16 15             10 9 8 7 6 5 4    0
         N  Z  C    V  Q  RESERVED  J  RESERVED  GE[3:0]  RESERVED E A I F T M[4:0]
    N:计算结果 <0, N = 1
              >= 0, N = 0
    Z:当计算结果出现 0 时(一般用于比较指令相等时),Z = 1;否则 Z = 0
    C:默认为1,不会自动置位
        减法:需借位, C = 0; 无借位, C = 1
        加法:有进位, C = 1; 无进位, C = 0
    V:有溢出: V = 1; 无溢出: V = 0
    Q:饱和:Q = 1; 不饱和:Q = 0
        饱和:
            0x80000000,...,-2,-1,0,1,2,...,0x7fffffff
            0x80000000 的减法运算将变回 正数, <= 0x7fffffff
            0x7fffffff 的加法运算将变回 负数, >= 0x80000000
        饱和运算:
            qadd(语法规则与add相同)
            计算结果饱和到 0x7fffffff 或 0x80000000,即正数不会大于 0x7fffffff,负数不会小于 0x80000000
    RESERVED:保留位,不用
    J:当前执行的执行种类,java指令, J = 1
    RESERVED:保留位,不用
    GE[3:0]:保留指令(不用)
    RESERVED:保留位,不用
    E:数据存储用大端:E = 1;用小端:E = 0
        住:在arm的CP15中修改其值,arm支持大小端,X86只支持小端
    A:abort中止禁止位
        禁止段错误发生,A = 1; 否则,A = 0
    I:中断禁止位
        I = 1,禁止IRQ请求
    F:快速中断禁止位
        F = 1,禁止FRQ请求
    M[4:0]:存放工作模式编号