汇编jmp内存表达式

leo*_*sas 4 assembly gdb disassembly

我为一个项目解散了一些东西,我遇到了以下一行

jmp *0x80498c0(,%eax,4)
Run Code Online (Sandbox Code Playgroud)

究竟是什么跳转指​​令试图做的?这是在gdb环境中.

谢谢

Gun*_*iez 8

这是间接跳跃.

指令计算位置[0x80498c0 + eax*4],加载存储在那里的值并跳转到存储在该位置的地址.

这种代码在跳转表中很常见,通常在C switch指令或等效指令之后.

编辑:*特定于AT&T语法.这是取消引用的助记符,就像在C中一样.在大括号中的部分丢失的情况下需要它 - jmp 0x80498c0只是跳转到这个地址,jmp *0x80498c0跳转到存储在0x80498c0中的指针的目标.