这是我在 Intel x86-64 的文档中看到的内容neg和许多其他说明(包括sub,所以理解 FLAGS 为neg x
as 0 - x取决于这个)。
The OF, SF, ZF, AF, and PF根据结果设置标志。
我假设sf = dest < 0
, zf = dest == 0
,但无法弄清楚其他标志是如何设置的。
我看到这个“根据结果设置”短语无处不在,并且希望您能帮助理解“相应”设置标志的确切含义。
因此,所有标志都是根据执行的操作设置的,这就是短语“根据结果设置”的含义。
#3.4.3.1 状态标志
EFLAGS 寄存器的状态标志(位 0、2、4、6、7 和 11)指示算术指令(例如 ADD、SUB、MUL 和 DIV 指令)的结果。状态标志函数有:
- CF(位 0)携带旗帜— 如果算术运算从结果的最高有效位生成进位或借位,则设置;否则清除。该标志指示无符号整数算术的溢出情况。它也用于多精度算术。
- PF(位 2)奇偶校验标志— 如果结果的最低有效字节包含偶数个 1 位,则设置;
否则清除。
- AF(位 4)辅助进位标志— 如果算术运算从结果的第 3 位生成进位或借位,则置位;否则清除。该标志用于二进制编码的十进制 (BCD) 算术。
- ZF(位 6)零标志— 如果结果为零则设置;否则清除。
- SF(位 7)标志旗— 设置等于结果的最高有效位,这是有符号整数的符号位。 (0表示正值,1表示负值。)
- OF(位 11)溢出标志— 设置整数结果是否太大正数或太小负数(不包括符号位)以适合目标操作数;否则清除。该标志指示有符号整数(二进制补码)算术的溢出情况。
在这些状态标志中,只有 CF 标志可以使用 STC、CLC 和 CMC 指令直接修改。位指令(BT、BTS、BTR 和 BTC)还将指定位复制到 CF 标志中。
只有CF标志可以直接修改。其他的根据操作来设置。
来源 - 英特尔
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)