ARM中CPSR的标志位中的C和V

进位标志和溢出标志
这次大概总结一下进位标志(Carry Flag, CF)和溢出标志(Overflow Flag, OF)的含义和理解方式

首先明确一点基本认识,处理器本身并不在意也不知道参与算术运算或者逻辑运算的操作数是有符号的还是无符号的。ALU总是为给定的操作数做二进制运算,并根据结果设置相应的标志位。

因此,视参与运算的整数的实际情况,CF或者OF会被独立的置位或者清零。他们的含义是有程序设计者赋予的,在进行无符号运算时,我们需要检查CF来确定运算结果是否正确,而在进行有符号运算时,则通过检查OF来判断结果是否发生溢出。

1. Carry Flag

加法中运算结果的最高有效位向更高位进位时C=1;

减法中运算结果的最高有效位从更高位借位时C=0;
 

2. Overflow Flag
OF 会在下面两种情形变为1:

两个最高有效位均为0的数相加,得到的结果最高有效位为1
两个最高有效位均为1的数相加,得到的结果最高有效位为0
除了这两种情况以外,OF 为0。

使用补码表示有符号数时,最高有效位为0表示正数,最高有效位为1表示负数。因此上面的论述也可以表示为,两个正数相加得到负数,或者两个负数相加得到正数时 OF 置位,否则复位。


版权声明:本文为CSDN博主「cmiao-me」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cxm2643199642/article/details/105937286/

你可能感兴趣的:(ARM)