CPSR寄存器总共有32bit,其中只用到12位:0~7,28~31
CPSR[4~0]:Mode bits模式选择位。
10000:用户模式。
ARM模式可访问的寄存器:PC,CPSR,R0~R14
Thumb模式可访问寄存器:PC,CPSR,R0~R7,LR,SP
10001:FIQ模式。
ARM模式:PC,CPSR,SPSR_fiq,R14_fiq~R8_fiq,R0~R7
Thumb模式:PC,CPSR,SPSR_fiq,LR_fiq,SP_fiq,R0~R7
10010:IRQ模式。
ARM模式:PC,CPSR,SPSR_irq,R14_irq~R13_irq,R0~R12
Thumb模式:PC,CPSR,SPSR_irq,LR_irq,SP_irq,R0~R7
10011:管理模式。
ARM模式:PC,CPSR,SPSR_svc,R14_svc~R13_svc,R0~R12
Thumb模式:PC,CPSR,SPSR_svc,LR_svc,SP_svc,R0~R7
10111:中止模式。
ARM模式:PC,CPSR,SPSR_abt,R14_abt~R13_abt,R0~R12
Thumb模式:PC,CPSR,SPSR_abt,LR_abt,SP_abt,R0~R7
11011:未定义模式。
ARM模式:PC,CPSR,SPSR_und,R14_und~R13_und,R0~R12
Thumb模式:PC,CPSR,SPSR_und,LR_und,SP_und,R0~R7
11111:系统模式。
ARM模式:PC,CPSR,R0~R14
Thumb模式:PC,CPSR,LR,SP,R0~R74
CPSR[5]:标志位(反映在外部引脚TBIT上,内部程序不得修改,否则工作状态不确定)
1,Thumb状态
0,ARM状态
CPSR[6]:FIQ中断禁止位
1,FIQ中断禁止
0,使能
CPSR[7]:IRQ中断禁止位
1,IRQ中断禁止
0,使能
CPSR[8~27]:保留
CPSR[28]:溢出状态位
可以有两种方法设置V:
对于加减,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出
对于其他非加减运算指令,V的值通常不变
CPSR[29]:借位状态位
可以有四种方法设置C:
加法运算(包括CMP):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。
减法运算(包括CMP):当运算时产生了借位时(无符号数溢出),C=0,否则C=1。
对于包含移位操作的非加/减运算指令,C为移出值的最后一位。
对于其它的非加/减运算指令,C的值通常不会改变。
CPSR[30]:零状态位
Z=1表示运算的结果为零,Z=0表示运算的结果非零。
CPSR[31]:正负状态位
当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零
阅读(2125) | 评论(0) | 转发(0) |