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

上传人:re****.1 文档编号:560863166 上传时间:2022-12-29 格式:DOC 页数:2 大小:52.50KB
返回 下载 相关 举报
ARM处理器CPSR标志位和条件符之间的关系._第1页
第1页 / 共2页
ARM处理器CPSR标志位和条件符之间的关系._第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《ARM处理器CPSR标志位和条件符之间的关系.》由会员分享,可在线阅读,更多相关《ARM处理器CPSR标志位和条件符之间的关系.(2页珍藏版)》请在金锄头文库上搜索。

1、ARM处理器CPSR标志位和条件符之间的关系ARh处理器CPSR标志位和条件符之间的关系类别:嵌入式系统本文目的是要理清ARh处理器的CPSR犬态标志和ARMt令的条件 符之间的关系。一、CPSF寄存器ARM V4勺CPSR寄存器(和保存它的SPSR寄存器)中的位分配如下图1所示。图1程序状态寄存器格式犬态标志位含义:(其它位的含义和本文主题无关,此处不多介绍)NN=1 表示运算的结果为负数; N=0 表示运算的结果为正数或零;ZZ=1表示运算的结果为零;Z=0表示运算的结果为非零;C 可以有4种方法设置C的值:一加法运算(包括比较指令 CMN :当运算结果产生了进位时(无符号数溢出),C=1

2、,否则C=Q减法运算(包括比较指令CMP :当运算时产生了借位,C=0,否则C=1。对于包含移位操作的非加/减运算指令,C为移出值的最后一位。一对于其他的非加/减运算指令,C的值通常不改变。V可以有2种方法设置V的值: 对于加 / 减法运算指令,当操作数和运算结果为二进制的补码表示的带符号 数时,V=1表示符号位溢出。一对于其他的非加/减运算指令,V的值通常不改变 二、条件符及对应的标志位表1 条件符描述表 三、关于C、V值更多的解释处理器内部以补码表示有符号数,8个二制位能够表达的整数范围是: +127 -128 , 16位表达的范围是: +32767 -32768 。 如果运算结果超出了这

3、个范围,就是产生了溢出 , 有溢出,说明有符号数的运算 结果需要考虑溢出情况。溢出标志V和进位标志C是两个意义不同的标志。进位标志表示无符号数运算结果是否超出范围;溢出标志表示有符号数运 算结果是否超出范围。处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志 C;同时,根据是否超出有符号数的范围设置溢 出标志 V。应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注 意是否溢出。判断运算结果是否溢出有一个简单的规则:只有当两个相同符号数相加,而运算结果的符号与原数据符号相反时,产生溢出;其他情况 下,则不

4、会产生溢出。代码举例 1: LDR r0, =0x7fffffffLDRr1, =0x70000000;ADDS r0, r0, r1; / 结果=0xefffffff对于无符号数运算来说,没有进位。对于有符号数运算来说,溢出。此时C=0 V=1;代码举例 2: LDR r0, =0xffffffffLDR r1,=0x70000000; ADDS r0, r0, r1; / 结果=0x6fffffff对于无符号数运算来说,有进位。对于有符号数运算来说,无溢出。此时 C=1V=0;代码举例 3:LDR r0, =0x8fffffffLDR r1,=0xf0000000 ; ADDS r0, r

5、0, r1; / 结果=0x7fffffff此时 C=?V二?;(思考一下,然后在 ARM莫拟器中验证下)代码举例4: II思考减法时,C值的影响 LDR r0, =0x3 LDR r1, =0x2 SUBS r0, r0, r1 对比: LDR r0, =0x3 LDR r1, =-2; (-2 的补码 0xfffffffe 会送到r1 ) ADDS r0, r0, r1四、CPSR犬态标志和ARM旨令的条件符之间的关系有了上面的背景知识以后,接下来思考表1中CPSR犬态标志和ARM旨令的条件符之间的关系,下面选取其中的一项来分析。女口:GE (有符号数大于等于)N=0 V=0:结果是大于等于0的数,且无符合溢出,所以大于等于关系成立N=1 V=1 :结果小于0,但有符号溢出考虑以下情况: c=a-b 1.a0, b0, bb 3.a0 参照上面提到过的判断溢出标志的简单规则,可 以得出:在此情况下,减法操作时如果结果小于 0 (N=1) ,则不会出现符号溢出 所以(在N=1 V=1前提下a0)这种情况不可能出现4.a0, b0 减法操作不可能出现符号溢出。其它项的分析过程类似。五、总结 尽管以上分析看起来有点复杂,但使用时在大多数情况下用一个简单的条件测试指令即可,不需要程序员计算出条件码的精确值即 可得到需要的结果。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号