我正在为一个项目分解一些东西,而我遇到了以下一行

jmp *0x80498c0(,%eax,4)

该跳转指令到底想做什么?
这是在gdb环境中。

谢谢

最佳答案

这是间接跳转。

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

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

编辑:*特定于AT&T语法。就像在C语言中一样,它是用于取消引用的助记符。如果大括号中的部分丢失,则需要它-jmp 0x80498c0会跳转到该地址,其中jmp *0x80498c0会跳转到存储在0x80498c0中的指针的目标。

关于assembly - 汇编jmp内存表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10201846/

10-11 18:22