ARM处理器CPSR标志位和条件符之间的关系_第1页
ARM处理器CPSR标志位和条件符之间的关系_第2页
ARM处理器CPSR标志位和条件符之间的关系_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARM处理器CPSR标志位和条件符之间的关系华清远见刘洪涛本文目的是要理清 ARM处理器的CPSR状态标志和ARM指令的条件符之间的关系。一、CPSR寄存器ARM V4的CPSR寄存器(和保存它的 SPSR寄存器)中的位分配如下图 1所示。零标志图1程序状态寄存器格式IRQ怔能位313029 2R76543210NZCV- -IFTM4M3M2MlM0模式伦1#状态标志位含义:(其它位的含义和本文主题无关,此处不多介绍)NN=1表示运算的结果为负数;N=0表示运算的结果为正数或零;Z=1表示运算的结果为零;Z=0表示运算的结果为非零;可以有加法运算则 C=0。减法运算4种方法设置(包括比较指令

2、(包括比较指令C的值:CMN):当运算结果产生了进位时(无符号数溢出),C=1,CMP):当运算时产生了借位,C=0,否则C=1。/减运算指令,C为移出值的最后一位。对于包含移位操作的非加对于其他的非加/减运算指令,C的值通常不改变。V可以有2种方法设置V的值:对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1示符号位溢出。对于其他的非加/减运算指令,V的值通常不改变、条件符及对应的标志位表1条件符描述表SuHix描述测试的标志位EQ等于(Equal)Z=1HE不等于(Notequal)z=oCS/HS无符号的大于或等于C=1CC/LO无符号的小于c=oM工负数(M

3、inus)N=1PL正数或零N=0VS溢出(Overflow)V=1VC没溢出v=oHI无符号的丈于C=1 & z=oLS无符号的小于或丸于C=0 or Z=1GE犬于等于N=VLT小于(Less Than)NI=VGT大于(Greater Than5Z=0 & N=VLE小于等于Z=1 or N=!VAL总是执行(Always)三、关于C V值更多的解释处理器内部以补码表示有符号数, 8个二制位能够表达的整数范围是: +127 -128 ,16 位表达的范围是:+32767 -32768。如果运算结果超出了这个范围,就是产生了溢出,有溢出,说明有符号数的运算结果需要考虑溢出情

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

5、0000 ;ADDSr0, r0, r1; / 结果=0xeflfffff代码举例1:对于无符号数运算来说,没有进位。 对于有符号数运算来说,溢出。此时 C=0 V=1 ;代码举例2:LDRLDRr0, =0xffffffffr1, =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、a<0, b<0减法操作时不可能符号溢出2、a>0, b<0可能出现 N=V=1女口( 8 位数):100-( -100)=200显然a>b3、a<0, b>0参照上面提到过的判断溢出标志的简单规则,可以得出:在此情况下,减法操作时如果结果小于 0 (N=1),则不会出现符号溢出所以(在N=1 V=1前提下a<0,b>0)这种情况不可能出现4、a>0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论