条件码

版权声明:转载请注明出处,谢谢!!! https://blog.csdn.net/qhdhnbd110/article/details/83022847

总结自《深入理解计算机系统》原书第三版3.6小结。

1. 条件码

CPU中除了整数寄存器(存放地址,数据),还存在一组单个位的条件码寄存器。它们表示了最近的算数或逻辑操作的属性,具体如下:

CF:最近的操作使最高位产生了进位,可用来检测无符号数是否产生溢出;

ZF:零标志,最近的操作结果为0;

SF:符号标志,最近的操作产生的结果为负数;

OF:最近的操作使补码操作产生了溢出(正溢出或者负溢出https://blog.csdn.net/qhdhnbd110/article/details/82993503

for example

//C表达式
unsigned int x = 3, y = 4, Result;
Result = x + y;
if(Result < x)//无符号溢出的判断方法
    //置CF为1


int x = 3, y = 4, Result;
if(Result == 0)
    //置ZF为1
if(Result < 0)
    //置SF为1
if(x < 0 == y < 0) && (Result < 0 != x < 0)//补码产生了溢出,x,y符号相同且与Result不同
    //置OF为1

除了leap指令,其他的逻辑、算数操作指令如add,xor等都会改变相应的条件码。

猜你喜欢

转载自blog.csdn.net/qhdhnbd110/article/details/83022847