当前位置:首页 > 嵌入式 > 嵌入式硬件

本文目的是要理清ARM处理器的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:

LDR r0, =0x7fffffff

LDR r1, =0x70000000;

ADDS r0, r0, r1; //结果=0xefffffff

对于无符号数运算来说,没有进位。

对于有符号数运算来说,溢出。

此时C=0 V=1;

代码举例2:

LDR r0, =0xffffffff

LDR r1, =0x70000000;

ADDS r0, r0, r1; //结果=0x6fffffff

对于无符号数运算来说,有进位。

对于有符号数运算来说,无溢出。

此时C=1 V=0;

代码举例3:

LDR r0, =0x8fffffff

LDR r1, =0xf0000000 ;

ADDS r0, r0, r1; //结果=0x7fffffff

此时C=? V=?;(思考一下,然后在ARM模拟器中验证下)

代码举例4://思考减法时,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.a<0, b<0

减法操作时不可能符号溢出

2.a>0, b<0

可能出现N=V=1?? 如(8位数):100-(-100)=200

显然a>b

3.a<0, b>0

参照上面提到过的判断溢出标志的简单规则,可以得出:在此情况下,

减法操作时如果结果小于0 (N=1),则不会出现符号溢出

所以(在N=1 V=1前提下a<0,b>0)这种情况不可能出现

4.a>0, b>0

减法操作不可能出现符号溢出。

其它项的分析过程类似。

五、总结

尽管以上分析看起来有点复杂,但使用时在大多数情况下用一个简单的条件测试指令即可,不需要程序员计算出条件码的精确值即可得到需要的结果。



茄紫

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭