在这种情况下,jmp指令如何在att程序集中工作

cmw*_*379 1 x86 assembly att

我现在正在AT&T程序集中逐步执行一个函数,无法弄清楚这个特定的jmp命令是如何工作的.

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

究竟是如何使用%eax寄存器和4使用跳转指令?我以前从未见过jmp使用过这种方式.

Jes*_*ter 5

如果您对at&t语法感到困惑,请将工具切换到英特尔模式.

您看到的有效地址并不特定于跳转,您可能遇到任何带有内存操作数的指令.

在intel语法中,这看起来像:jmp [0x804a140 + 4 * eax].它是从内存地址获取跳转目标的间接跳转0x804a140 + 4 * eax.这可能是所谓的跳转表中的一个项目.