- 此问题在此处已有答案**:
how often does FLAGS register get updated in asm?(1个答案)
十小时前关门了。
我想知道基本EFLAGS标志在什么条件下(CF,ZF,OF,SF ...)都设置好了。我已经看了Intel的x86指令手册,和this website,做得很好,但没有成功。我设法找到了条件跳转的条件(例如,如果(SF!= OF)或(ZF == 1),则采用JLE),但不考虑标志本身。
关于ZF,它是最简单的一个,因为它只需要检查结果是否为零。对于SF,我假设必须检查结果的最高有效位是零还是一。但是对于其他的,我不确定。另外,这些条件在所有x86指令中操作这些标志时是否相同,或者ADD和CMP是否会在不同的公式下设置它们的标志?
1条答案
按热度按时间ctehm74n1#
intel SDM回答了您在第1卷-3.4.3 EFLAGS寄存器中提出的问题。
部分引用文件:
3.4.3.1 Status Flags
EFLAGS寄存器的状态标志(位0、2、4、6、7及11)表示算术指令(如ADD、SUB、MUL及DIV指令)的结果。状态标志的功能包括:
[...]
这并不是您能找到的关于这个主题的最深入的源代码,因为它没有涵盖各种x86实现的勘误表(而且有很多这样的实现...),但它肯定是您入门的最佳源代码。
快乐黑客;)