arm core中寄存器CPSR的每一位的具体意义
2013-11-03 18:16
274 查看
有什么错误希望大家指出来,一起学习;
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]:存放工作模式编号
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]:存放工作模式编号
相关文章推荐
- 详细解读ARM寄存器之CPSR
- 详细解读ARM寄存器之CPSR
- 详细解读ARM寄存器之CPSR
- ARM的7种工作模式、37个通用寄存器、CPSR程序状态寄存器
- 详细解读ARM寄存器之CPSR
- ARM 中 CPSR_cxsf的意义
- ARM_Core的处理器模式与寄存器
- ARM寄存器的8种寻址方式01
- arm c语言的参数和寄存器传递规则
- jni中arm64-v8a,armeabi-v7a,armeabi文件夹的意义和用法
- ARM CPSR+SPSR
- ATU中Cause Value 值的具体意义
- ARM 架构 dump_stack 实现分析(1.0 具体实例)
- arm 程序状态寄存器
- ARM 寄存器说明
- ARM汇编编程基础之一 —— 寄存器
- ARM特殊寄存器定义详解——#define A (* (volatile unsigned long *) 0x48000000(zz)
- linux+arm 网卡故障调试:ethtool&phy寄存器读写
- 高效C编程(上) 基础数据类型,Loop,寄存器分配,函数调用,指针别名 ARM
- ARM寄存器与汇编指令详解