如何理解x86手册中标志位的undefined/clear/set?我的理解是否正确?
x86标志位术语理解纠正
根据x86指令集shld的说明文档:
当计数值大于等于1时,CF标志位被填充为目标操作数移出的最后一位,SF、ZF和PF标志位根据运算结果设置。对于1位移位操作,若发生符号变化则OF标志位被设置,否则被清零。对于大于1位的移位操作,OF标志位为undefined。若发生移位,AF标志位为undefined。若计数值为0,标志位不受影响。若计数值大于操作数长度,标志位为undefined。
你对set和clear的理解是正确的,但**undefined和not affected是两个完全不同的概念,不能等同**,正确的解释如下:
set:CPU将标志位设为1clear:CPU将标志位设为0not affected:标志位保持指令执行前的原有状态,CPU不对其做任何修改undefined:标志位的状态不可预测,可能是0、1或其他值,不同CPU型号甚至同型号不同执行环境下结果都可能不同,软件绝对不能依赖这个标志位的状态
内容的提问来源于stack exchange,提问作者Teng Wu
相关产品推荐
相关产品推荐

