Chinaunix首页 | 论坛 | 博客
  • 博客访问: 196118
  • 博文数量: 20
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 346
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-23 14:37
文章分类
文章存档

2016年(2)

2015年(3)

2014年(11)

2013年(4)

我的朋友

分类: LINUX

2014-07-22 17:57:08

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) |
给主人留下些什么吧!~~