新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ARM处理器CPSR标志位和条件符之间的关系

ARM处理器CPSR标志位和条件符之间的关系

作者:时间:2012-12-08来源:网络收藏

  本文目的是要理清的CPSR状态标志和ARM指令的之间的关系。

  一、CPSR寄存器

  ARM V4的CPSR寄存器(和保存它的SPSR寄存器)中的位分配如下图1所示。

图1 程序状态寄存器格式

  状态标志位含义:(其它位的含义和本文主题无关,此处不多介绍)

  N

  N=1 表示运算的结果为负数;N=0 表示运算的结果为正数或零;

  Z

  Z=1 表示运算的结果为零;Z=0表示运算的结果为非零;

  C

  可以有4种方法设置C的值:

  ─ 加法运算(包括比较指令CMN):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。

  ─ 减法运算(包括比较指令CMP):当运算时产生了借位,C=0,否则C=1。

  ─ 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。

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

  V

  可以有2种方法设置V的值:

  ─ 对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。

  ─ 对于其他的非加/减运算指令,V的值通常不改变

  二、及对应的标志位

  表1 描述表

  三、关于C、V值更多的解释

  处理器内部以补码表示有符号数,8个二制位能够表达的整数范围是:+127 ~ -128,16位表达的范围是:+32767 ~ -32768。如果运算结果超出了这个范围,就是产生了溢出,有溢出,说明有符号数的运算结果需要考虑溢出情况。

  溢出标志V和进位标志C是两个意义不同的标志。进位标志表示无符号数运算结果是否超出范围;溢出标志表示有符号数运算结果是否超出范围。

  处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志C;同时,根据是否超出有符号数的范围设置溢出标志V。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭