接上一篇说最复杂的条件码寄存器组合
所有组合都是基于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无符号大于等于 |