这个问题与JE装配说明有关 通常在解释JE时,人们只传递一个参数。 我对此没有疑问。 我的问题是当JE与多个参数(特别是两个)一起使用时。这是一个例子:
8048f73: 85 c0 test %eax,%eax
8048f75: 74 05 je 8048f7c <phase_1+0x22>
我对这两行的理解扩展到:首先测试eax是否等于零(基本上),如果是,则跳转到8048f7c的指令(这是一个离开指令)。我不明白的是<phase_1+0x22>
部分正在做什么。我目前对这些指令的理解可能不正确,那么有人会澄清JE指令在给出多个输入时的作用吗?
答案 0 :(得分:2)
je
指令只有1个参数,即分支地址。 <phase_1+0x22>
只是来自反汇编程序的友好服务,它试图显示数字地址的可读形式。在这种情况下,这意味着地址8048f7c
是0x22
字节超过标签phase_1
。如果你p/a phase_1+0x22
,你可以在gdb中检查。
PS:如果您对任何指令有疑问,请先检查指令集参考。