我正在为一个项目分解一些东西,而我遇到了以下一行
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/