在VS2013中调试x86汇编代码时,我需要检查FLAGS寄存器的内容。但是,当我在注册窗口中启用“标志”时,我得到了:
OV = 0 UP = 0 EI = 1 PL = 1 ZR = 0 AC = 1 PE = 0 CY = 1
那些与x86的典型ODITSZAPC
标志不对应;任何人都可以向我解释发生了什么事吗?那些只是相同标志的奇怪名称吗?
我有64位Core i7;它会影响显示的名称吗?
答案 0 :(得分:15)
| Overflow | OV |
| Direction | UP |
| Interrupt | EI |
| Sign | PL |
| Zero | ZR |
| Auxiliary | AC |
| Parity | PE |
| Carry | CY |
答案 1 :(得分:-1)
是的,它们是相同的标志,还有什么?
但是这些确实令人误解。当UP = 1时,它实际上是反向方向(STD),当PL = 1时,它实际上是符号/负号。 VS设计师为什么要尝试打破ASM的东西,这是我多年以来无法理解的。
在GNU gdb中,它们以相同的方式将指令指针(IP)称为$ pc,将DWORD / DD称为word(w),将WORD / DW称为半字(h),将QUADWORD / DQ称为(g)巨人?
C ++程序员真的很奇怪,他们喜欢为此打破常规。