取消引用IA-32程序集()或*中的语法?

时间:2013-10-07 01:20:39

标签: assembly att ia-32

这是混乱的根源: movl(%edx),%eax 这会将%eax的值视为地址,转到该地址并将其内容复制到%eax,

记住这一点然后看: jmp *(%edx)由于前面使用了括号(在mov指令中取消引用),那么星号是否是双重引用的一种形式?

......这个指令的表现如何? - > jmp(%edx)

......或者是什么 jmp *%edx jmp%edx

1 个答案:

答案 0 :(得分:0)

*表示绝对跳跃,而星号的缺席意味着相对跳跃。 见http://sourceware.org/binutils/docs-2.17/as/i386_002dMemory.html#i386_002dMemory

但是,我不知道汇编程序是否推断出间接的绝对跳转,即使*缺失,也不知道是否存在间接相对跳跃的不可能性。