X86 比较相等值时cmp和je不起作用

X86 比较相等值时cmp和je不起作用,x86,cmp,X86,Cmp,[家庭作业免责声明] 我正在做这项工作。基本上,我必须使用“bomb”可执行文件的objdump来找到正确的输入字符串来解除“bomb”的武装。目前我已经解决了5/7阶段,正在进行第6阶段的工作,其中包含以下程序集: 8048eb0: 39 18 cmp %ebx,(%eax) 8048eb2: 74 05 je 8048eb9 <phase_6+0x49> 8048eb4: e8

[家庭作业免责声明]

我正在做这项工作。基本上,我必须使用“bomb”可执行文件的objdump来找到正确的输入字符串来解除“bomb”的武装。目前我已经解决了5/7阶段,正在进行第6阶段的工作,其中包含以下程序集:

 8048eb0:   39 18                   cmp    %ebx,(%eax)
 8048eb2:   74 05                   je     8048eb9 <phase_6+0x49>
 8048eb4:   e8 d0 0a 00 00          call   8049989 <explode_bomb>
为什么这不起作用?这是首次出现此问题的作业。

(%eax)
%eax
不同


(%eax)表示加载由
eax
指向的值,而不是
eax
本身。

上次我选中
(%eax)
表示加载由
eax
指向的值,而不是
eax
本身。虽然我不太熟悉这个确切的汇编语法。是的,我只是被吓坏了。哎呀。谢谢,我现在找到了正确的答案。:)请随意将其作为解决方案提交,这样我就可以将其标记为最佳答案。我已经回答了。几年前,我在我的一个班上做了几乎完全相同的项目!哦,怀旧……:)AT&T的语法让我暴躁。难怪你有麻烦了。手动解析比英特尔要困难得多。
Good work!  On to the next...
134530284

Breakpoint 2, 0x08048e74 in phase_6 ()
Current language:  auto; currently asm
(gdb) break *0x8048eb0
Breakpoint 3 at 0x8048eb0
(gdb) c
Continuing.

Breakpoint 3, 0x08048eb0 in phase_6 ()
(gdb) print $ebx
$1 = 134530284
(gdb) print $eax
$2 = 134530284
(gdb) si
0x08048eb2 in phase_6 ()
(gdb) si
0x08048eb4 in phase_6 ()
(gdb) si
0x08049989 in explode_bomb ()
(gdb)