分类: LINUX
2013-12-17 23:59:08
用户模式 |
系统模式 |
特权模式 |
中止模式 |
未定义指令模 |
外部中断模 |
快速中断模 |
R0 |
R0 |
R0 |
R0 |
R0 |
R0 |
R0 |
R1 |
R1 |
R1 |
R1 |
R1 |
R1 |
R1 |
R2 |
R2 |
R2 |
R2 |
R2 |
R2 |
R2 |
R3 |
R3 |
R3 |
R3 |
R3 |
R3 |
R3 |
R4 |
R4 |
R4 |
R4 |
R4 |
R4 |
R4 |
R5 |
R5 |
R5 |
R5 |
R5 |
R5 |
R5 |
R6 |
R6 |
R6 |
R6 |
R6 |
R6 |
R6 |
R7 |
R7 |
R7 |
R7 |
R7 |
R7 |
R7 |
R8 |
R8 |
R8 |
R8 |
R8 |
R8 |
R8_fiq |
R9 |
R9 |
R9 |
R9 |
R9 |
R9 |
R9_fiq |
R10 |
R10 |
R10 |
R10 |
R10 |
R10 |
R10_fiq |
R11 |
R11 |
R11 |
R11 |
R11 |
R11 |
R11_fiq |
R12 |
R12 |
R12 |
R12 |
R12 |
R12 |
R12_fiq |
R13 |
R13 |
R13_svc |
R13_abt |
R13_und |
R13_irq |
R13_fiq |
R14 |
R14 |
R14_svc |
R14_abt |
R14_und |
R14_irq |
R14_fiq |
PC |
PC |
PC |
PC |
PC |
PC |
PC |
CPSR |
CPSR |
CPSR |
CPSR |
CPSR |
CPSR |
CPSR |
|
|
SPSR_svc |
SPSR_abt |
SPSR_und |
SPSR_irq |
SPSR_fiq |
31 |
30 |
29 |
28 |
27 |
26 |
7 |
6 |
5 |
4 |
3 |
21 |
0 |
N |
Z |
C |
V |
Q |
DNMLRAZ |
I |
F |
I |
M4 |
M3 |
M |
M0 |
标志位 |
含 义 |
N |
本位设置成当前指令运算结果的bit[31]的值
当两个补码表示的有符号整数运算时,N=1表示运算的结果为负数,N=0 表示结果为正数或零 |
Z |
Z=1表示运算结果是0,Z=0表示运算结果不是零
对于CMP指令,Z=1表示进行比较的两个数大小相等 |
C |
在加法指令中(包括比较指令CMN),结果产生进位了,则C=1,表示无符号数运算发生上溢出,其他情况下C=0
在减法指令中(包括比较指令CMP),结果产生借位了,则C=0,表示无符号数运算发生下溢出,其他情况下C=1
对于包含移位操作的非加/减法运算指令,C中包含最后一次被溢出的位的数值,对于其他非加/减法运算指令,C位的值通常不受影响 |
V |
对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出
其他的指令通常不影响V位 |
M[4:0] |
处理器模式 |
可访问的寄存器 |
0b10000 |
User |
PC,R14~R0,CPSR |
0b10001 |
FIQ |
PC,R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq |
0b10010 |
IRQ |
PC,R14_irq~R13_irq,R12~R0,CPSR,SPSR_irq |
0b10011 |
Supervisor |
PC,R14_svc~R13_svc,R12~R0,CPSR,SPSR_svc |
0b10111 |
Abort |
PC,R14_abt~R13_abt,R12~R0,CPSR,SPSR_abt |
0b11011 |
Undefined |
PC,R14_und~R13_und,R12~R0,CPSR,SPSR_und |
0b11111 |
System |
PC,R14~R0,CPSR(ARM v4及更高版本) |