arm处理器cpsr标志位和条件符之间的关系

arm处理器cpsr标志位和条件符之间的关系

ID:15398778

大小:163.50 KB

页数:3页

时间:2018-08-03

arm处理器cpsr标志位和条件符之间的关系_第1页
arm处理器cpsr标志位和条件符之间的关系_第2页
arm处理器cpsr标志位和条件符之间的关系_第3页
资源描述:

《arm处理器cpsr标志位和条件符之间的关系》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ARM处理器CPSR标志位和条件符之间的关系类别:嵌入式系统  阅读:918  本文目的是要理清ARM处理器的CPSR状态标志和ARM指令的条件符之间的关系。  一、CPSR寄存器  ARMV4的CPSR寄存器(和保存它的SPSR寄存器)中的位分配如下图1所示。  图1程序状态寄存器格式  状态标志位含义:(其它位的含义和本文主题无关,此处不多介绍)  N  N=1表示运算的结果为负数;N=0表示运算的结果为正数或零;  Z  Z=1表示运算的结果为零;Z=0表示运算的结果为非零;  C  可以有4种方法设置C的值:  ─加法运算(包括

2、比较指令CMN):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。  ─减法运算(包括比较指令CMP):当运算时产生了借位,C=0,否则C=1。  ─对于包含移位操作的非加/减运算指令,C为移出值的最后一位。  ─对于其他的非加/减运算指令,C的值通常不改变。  V  可以有2种方法设置V的值:  ─对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。  ─对于其他的非加/减运算指令,V的值通常不改变  二、条件符及对应的标志位  表1条件符描述表  三、关于C、V值更多的解释  处

3、理器内部以补码表示有符号数,8个二制位能够表达的整数范围是:+127~-128,16位表达的范围是:+32767~-32768。如果运算结果超出了这个范围,就是产生了溢出,有溢出,说明有符号数的运算结果需要考虑溢出情况。  溢出标志V和进位标志C是两个意义不同的标志。进位标志表示无符号数运算结果是否超出范围;溢出标志表示有符号数运算结果是否超出范围。  处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志C;同时,根据是否超出有符号数的范围设置溢出标志V。  应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算

4、的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。  判断运算结果是否溢出有一个简单的规则:只有当两个相同符号数相加,而运算结果的符号与原数据符号相反时,产生溢出;其他情况下,则不会产生溢出。  代码举例1:  LDRr0,=0x7fffffff  LDRr1,=0x70000000;  ADDSr0,r0,r1;//结果=0xefffffff  对于无符号数运算来说,没有进位。  对于有符号数运算来说,溢出。  此时C=0V=1;  代码举例2:  LDRr0,=0xffffffff  LDRr1,=0x700

5、00000;  ADDSr0,r0,r1;//结果=0x6fffffff  对于无符号数运算来说,有进位。  对于有符号数运算来说,无溢出。  此时C=1V=0;  代码举例3:  LDRr0,=0x8fffffff  LDRr1,=0xf0000000;  ADDSr0,r0,r1;//结果=0x7fffffff  此时C=?V=?;(思考一下,然后在ARM模拟器中验证下)  代码举例4://思考减法时,C值的影响  LDRr0,=0x3  LDRr1,=0x2  SUBSr0,r0,r1  对比:  LDRr0,=0x3  LDRr

6、1,=-2;(-2的补码0xfffffffe会送到r1)  ADDSr0,r0,r1  四、CPSR状态标志和ARM指令的条件符之间的关系  有了上面的背景知识以后,接下来思考表1中CPSR状态标志和ARM指令的条件符之间的关系,下面选取其中的一项来分析。  如:GE:(有符号数大于等于)  N=0V=0:结果是大于等于0的数,且无符合溢出,所以大于等于关系成立  N=1V=1:结果小于0,但有符号溢出  考虑以下情况:c=a-b  1.a<0,b<0  减法操作时不可能符号溢出  2.a>0,b<0  可能出现N=V=1??如(8位数

7、):100-(-100)=200  显然a>b  3.a<0,b>0  参照上面提到过的判断溢出标志的简单规则,可以得出:在此情况下,  减法操作时如果结果小于0(N=1),则不会出现符号溢出  所以(在N=1V=1前提下a<0,b>0)这种情况不可能出现  4.a>0,b>0  减法操作不可能出现符号溢出。  其它项的分析过程类似。  五、总结  尽管以上分析看起来有点复杂,但使用时在大多数情况下用一个简单的条件测试指令即可,不需要程序员计算出条件码的精确值即可得到需要的结果

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。