x86 cmp操作码,指针和内联文字

时间:2012-01-22 21:59:45

标签: assembly x86 cmp

我正在使用gdb来检查程序。在汇编中,代码正在执行:

cmp $0x5, %eax

但是,当我检查%eax的内容时,我会在作为字符串检查时得到:\020\343\377\377\377\177

\020\343\377\377\377\177如何与汇编中的$ 0x5进行比较?

1 个答案:

答案 0 :(得分:2)

在这种情况下,

cmp正在将eax中的值与常量5进行比较。 eax指向的值,如果您认为它实际上是指针,则不会与常量进行比较。

通过减法进行比较 - 在​​您的情况下,这意味着从5中的值和几个标志(CF,OF,SF,ZF,AF和PF,根据{{​​3}})设置得当。通常,eax指令后跟某种条件指令(通常是跳转),根据比较结果执行不同的操作。

如果您告诉我们cmp中的值,而不是将eax解释为指针,我可能会向您提供更多信息。您可以使用eaxp $eax获取gdb中info registers的值。