刘帅嵌入式系统-当前程序状态寄存器(cpsr)

CPSR的格式如下图。SPSR格式与CPSR格式相同。

 

1、条件标志位

N(Negative)、Z(Zero)、C(Carry)及V(oVerflow)统称为条件标志位。大部分的ARM指令可以根据CPSR中的这些条件标志位选择性地执行。各条件标志位的具体含义如下。

N:当两个补码表示的有符号整数运算时,N=1表示运算的结果为负数;N=0表示结果为整数或零。

Z:Z=1表示运算结果为零;Z=0表示运算结果不为零。对于CMP指令,Z=1表示进行比较的两个数大小相等。

C:下面介绍4种情况C的设置方法。

--在加法指令中(包括比较指令CMN),当结果产生了进位,则C=1,表示无符号数运算发生上溢出;其他情况下C=0。

--在剑法指令中(包括比较指令CMP),当运算中发生借位,则C=0,表示无符号数运算发生下溢出;其他情况下C=1。

--对于包含移位操作的非加/减发运算指令,C中包含最后一次被溢出的位的数值。

--对于其他非加/减法运算指令,C位的值通常不变。

V:对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。通常其他的指令不影响V位,具体可参考各指令的说明。

2、CPSR中的控制位

CPSR的低8位I、F、T及M[4:0]统称为控制位。当异常发生时,这些位发生变化,在特权级的处理器模式下,软件可以修改这些控制位。

1)中断禁止位

-- I=1时,禁止IRQ中断。

-- F=1时,禁止FIQ中断。

2)T控制位

T控制位用于控制指令执行的状态,级说明本指令时ARM指令,还是Thumb指令。但对于不同版本的ARM处理器,T控制位的含义不同。

对于ARMv3和ATMv4的非T系列版本的处理器,没有ARM状态和Thumb状态切换,固T=0。

对于ARMv4以及更高的版本的T系列处理器,T含义如下:

-T=0表示执行ARM指令。

-T=1表示执行Thumb指令。

对于ARMv5以及更高的、版本的非T系列的ARM处理器,T含义如下:

-T=0表示执行ARM指令。

-T=1表示强制下一条执行的指令产生未定义指令中断。

3)M控制位,可参考上图所示。

3、CPSR中的其他位

CPSR中的其他位用于将来ARM版本的扩展。应用软件不要操作这些位,以免与ARM将来版本的扩展冲突。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值