Fork me on GitHub

CSAPP-8

接上一篇说最复杂的条件码寄存器组合

所有组合都是基于a-b的前提。

后缀 逻辑运算(值为1) 描述
e ZF 相等。此时ZF为1,a-b=0,相等
ne ~ZF 反之
s SF 负数。SF为1,设b=0,即a<0
ns ~SF 反之
l SF^OF 有符号的小于。当OF为0时,则代表没有溢出,此时SF必须为1,SF为1则代表结果为负。即a-b<0,也就是a<b,也就是小于的意思。 当OF为1时,则代表产生了溢出,而此时SF必须为0,也就是说结果最后为正数,那么此时则是负溢出,也可以得到a-b<0,即a<b.
le (SF^OF)\ ZF 有符号的小于等于。括号里代表小于,和等于作或运算
g (SF^OF)&~ZF 有符号的大于。小于且不等于
ge ~(SF^OF) 有符号的大于等于。不小于
b CF 无符号的小于。无符号减法只有在减出负数的时候才可能溢出,也就是说只要结果溢出了,那么一定有a-b<0
be CF\ ZF 无符号的小于等于。
a ~CF& ~ZF 无符号的大于。无符号大于等于且不等于
ae ~CF s无符号大于等于
0%