立即注册
查看: 1734|回复: 3

[arm开发资料] ARM中的程序状态寄存器(CPSR)

已实名认证
发表于 2015-11-27 09:12:55 | 显示全部楼层 |阅读模式 来自 广东省深圳市
3130292827~876543210
N
Z
C
V
保留
I
F
T
M4
M3
M2
M1
M0
NNegative/Less ThanIIRQ disable
ZZeroFFIQ disable
CCarry/Borrow/ExtendTState bit
VOverflowM0~4Mode bits
1、条件码标志
  N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。条件码标志各位的具体含义如下表所示:

标志位
含                                义
N
当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零
Z
Z=1表示运算的结果为零,Z=0表示运算的结果非零。
C
可以有4种方法设置C的值:
-加法运算(包括CMP):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。
-减法运算(包括CMP):当运算时产生了借位时(无符号数溢出),C=0,否则C=1。
-对于包含移位操作的非加/减运算指令,C为移出值的最后一位。
-对于其它的非加/减运算指令,C的值通常不会改变。
V
可以有2种方法设置V的值:
-对于加减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出
-对于其它的非加/减运算指令,V的值通常不会改变。
Q
在ARM V5及以上版本的E系列处理器中,用Q标志位指示增强的DSP运算指令是否发生了溢出。在其它版本的处理器中,Q标志位无定义

  在ARM状态下,绝大多数的指令都是有条件执行的;在THUMB状态下,仅有分支指令是条件执行的。

条件码:

EQ Z置位    相等

NE Z清零    不相等

CS C置位    无符号数大于或等于

CC C清零    无符号数小于

MI N置位    负数

PL N清零    正数或零

VS V置位    溢出

VC V清零    未溢出

HI C置位Z清零   无符号数大于

LS C清零Z置位   无符号数小于或等于

GE N等于V    带符号数大于或等于

LT N不等于V   带符号数小于

GT Z清零且(N等于V)  带符号数大于

LE Z置位且(N不等于V) 带符号数小于或等于

AL 忽略    无条件执行



l           0000 = EQ - Z set (equal)

l           0001 = NE - Z clear (not equal)

l           0010 = CS - C set (unsigned higher or same)

l           0011 = CC - C clear (unsigned lower)

l           0100 = MI - N set (negative)

l           0101 = PL - N clear (positive or zero)

l           0110 = VS - V set (overflow)

l           0111 = VC - V clear (no overflow)

l           1000 = HI - C set and Z clear (unsigned higher)

l           1001 = LS - C clear or Z set (unsigned lower or same)

l           1010 = GE - N set and V set, or N clear and V clear (greater or equal)

l           1011 = LT - N set and V clear, or N clear and V set (less than)

l           1100 = GT - Z clear, and either N set and V set, or N clear and V clear (greater than)

l           1101 = LE - Z set, or N set and V clear, or N clear and V set (less than or equal)

l           1110 = AL - always

l           1111 = NV - never




2 控制位
  CPSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行于特权模式时,这些位也可以由程序修改。
  ·中断禁止位I、F:置1时,禁止IRQ中断和FIQ中断。
  ·T标志位:该位反映处理器的运行状态。当该位为1时,程序运行于THUMB状态,否则运行于ARM状态。该信号反映在外部引脚TBIT上。在程序中不得修改CPSR中的TBIT位,否则处理器工作状态不能确定。
  ·运行模式位M[4:0]:这几位是模式位,这些位决定了处理器的运行模式。具体含义如下表所示:
  ·保留位:CPSR中的其余位为保留位,当改变CPSR中的条件码标志位或者控制位时,保留位不要改变,在程序中也不要用保留位存储数据。保留位将用于ARM版本的扩展。

M[4:0]
处 理器模式
             ARM模式可访问的寄存器
THUMB模式可访问的寄存器
0b10000
USER
用户模式
PC,CPSR,R0~R14
PC,CPSR,R0~R7,LR,SP
0b10001
FIQ模式
PC,CPSR,SPSR_fiq,R14_fiq~R8_fiq,R0~R7
PC,CPSR,SPSR_fiq,LR_fiq,SP_fiq,R0~R7
0b10010
IRQ模式
PC,CPSR,SPSR_irq,R14_irq~R13_irq,R0~R12
PC,CPSR,SPSR_irq,LR_irq,SP_irq,R0~R7
0b10011
SVC管理模式
PC,CPSR,SPSR_svc,R14_svc~R13_svc,R0~R12
PC,CPSR,SPSR_svc,LR_svc,SP_svc,R0~R7
0b10111
ABT
中止模式
PC,CPSR,SPSR_abt,R14_abt~R13_abt,R0~R12
PC,CPSR,SPSR_abt,LR_abt,SP_abt,R0~R7
0b11011
UND
未定义模式
PC,CPSR,SPSR_und,R14_und~R13_und,R0~R12
PC,CPSR,SPSR_und,LR_und,SP_und,R0~R7
0b11111
SYSTEM
系统模式
PC,CPSR,R0~R14
PC,CPSR,LR,SP,R0~R74
已实名认证
发表于 2015-11-27 09:23:47 | 显示全部楼层 来自 广东省深圳市罗湖区
顶一个  支持下
已绑定手机
发表于 2015-11-27 10:15:02 | 显示全部楼层 来自 河北省保定市
感谢分享......
发表于 2015-12-4 13:52:59 | 显示全部楼层 来自 广东省深圳市罗湖区
不错不错!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表