Mik*_*ike 4 x86 assembly x86-64
以下是我在Intel x86-64neg指令的文档中看到的令人困惑的内容.
" 根据结果设置OF,SF,ZF,AF和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位)AF(第4位)辅助进位标志 - 如果算术运算产生结果的第3位的进位或借位,则置位; 否则清除.该标志用于二进制编码的十进制(BCD)算法.
- ZF(第6位)零标志 - 如果结果为零则置位; 否则清除.
- SF(第7位)符号标志 - 设置等于结果的最高有效位,即有符号整数的符号位.(0表示正值,1表示负值.)
- OF(第11位)溢出标志 - 设置整数结果是否过大,正数或过小的负数(不包括符号位)以适合目标操作数; 否则清除.该标志表示有符号整数(二进制补码)算术的溢出条件.
在这些状态标志中,只能使用STC,CLC和CMC指令直接修改CF标志.位指令(BT,BTS,BTR和BTC)也将指定位复制到CF标志中.
只能直接修改CF标志.其他根据操作设置.