0

这是混淆的根源: movl (%edx), %eax这将 %eax 的值视为一个地址,去它并将其内容复制到 %eax,

牢记这一点,然后查看: jmp *(%edx)由于早先使用了括号(作为 mov 指令中的取消引用),那么星号是双重取消引用的一种形式吗?

...以及该指令的执行方式有何不同?--> jmp (%edx)

...或者 jmp *%edxjmp %edx怎么样?

4

1 回答 1

0

表示绝对跳跃,而*没有星号则表示相对跳跃。请参阅http://sourceware.org/binutils/docs-2.17/as/i386_002dMemory.html#i386_002dMemory

但是,我不知道汇编程序是否从间接中推断出绝对跳转,即使*它丢失了,或者它对间接相对跳转的不可能性大喊大叫。

于 2013-10-07T01:33:33.423 回答