ARM处理器CPSR标志位和条件符

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

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

1、ARM处理器CPSR标志位和条件符之间的关系华清远见 刘洪涛本文目的是要理清ARM处理器的CPSR状态标志和ARM指令的条件符之间的关系。一、CPSR寄存器ARM V4的CPSR寄存器(和保存它的SPSR寄存器)中的位分配如下图1所示。NZCV 1FTM4M3M2MlM03130292876543210溢出标志进位标志零标志负数标志模式位 状态位FIQ使能位 IRQ使能位图 1 程序状态寄存器格式状态标志位含义:(其它位的含义和本文主题无关,此处不多介绍)NN=1表示运算的结果为负数;N=0表示运算的结果为正数或零;ZZ=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 条件符描述表Suffix描述测试的标志位EQ等于(Equal)Z=1NE不等于(Not equal)z=oCS/H

3、S无符号的犬于或等于C=1CC/LO无符号的小于c=oMI负数(Minus)N=1PL正数或零N=0VS溢出(Overflow)V=1VC没溢出V=0HI无符号的犬于C=1 & Z=0LS无符号的小于或犬于C=0 or 1GE犬于等于N=VLT小于(Less Than)N!=VGT大于(Greater Than)Z=0 & N=VLE小于等于Z=1 or N=!V总是执行(Always)三、关于C、V值更多的解释处理器内部以补码表示有符号数,8个二制位能够表达的整数范围是:+127 -128,16 位表达的范围是:+32767 -32768。如果运算结果超出了这个范围,就是产生了溢出,有溢 出

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

5、=0x7fffffffLDRr1, =0x70000000 ;ADDSr0, r0, r1; 结果=0xefffffff对于无符号数运算来说,没有进位。 对于有符号数运算来说,溢出。此时 c=0 V=1;代码举例 2:LDRr0, =0xffffffffLDRr1, =0x70000000;ADDSr0, r0, r1 ; 结果=0x6fffffff对于无符号数运算来说,有进位。对于有符号数运算来说,无溢出 此时 C=1 V=0;代码举例 3:LDRLDRADDSr0, =0x8fffffffr1, =0xf0000000 ;r0, r0, r1; 结果=0x7fffffff此时C=?V=?;

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

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

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

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