我正在使用gdb来检查程序。在汇编中,代码正在执行:
cmp $0x5, %eax
但是,当我检查%eax
的内容时,我会在作为字符串检查时得到:\020\343\377\377\377\177
。
\020\343\377\377\377\177
如何与汇编中的$ 0x5进行比较?
答案 0 :(得分:2)
cmp
正在将eax
中的值与常量5
进行比较。 eax
指向的值,如果您认为它实际上是指针,则不会与常量进行比较。
通过减法进行比较 - 在您的情况下,这意味着从5
中的值和几个标志(CF,OF,SF,ZF,AF和PF,根据{{3}})设置得当。通常,eax
指令后跟某种条件指令(通常是跳转),根据比较结果执行不同的操作。
如果您告诉我们cmp
中的值,而不是将eax
解释为指针,我可能会向您提供更多信息。您可以使用eax
或p $eax
获取gdb中info registers
的值。