【发布时间】:2021-11-07 13:49:33
【问题描述】:
我现在正在逐步执行 AT&T 汇编中的一个函数,但无法弄清楚这个特定的 jmp 命令是如何工作的。
jmp *0x804a140(,%eax,4)
究竟如何使用 %eax 寄存器和 4 与跳转指令?我以前从未见过 jmp 这样使用过。
【问题讨论】:
我现在正在逐步执行 AT&T 汇编中的一个函数,但无法弄清楚这个特定的 jmp 命令是如何工作的。
jmp *0x804a140(,%eax,4)
究竟如何使用 %eax 寄存器和 4 与跳转指令?我以前从未见过 jmp 这样使用过。
【问题讨论】:
如果您对 at&t 语法感到困惑,请将您的工具切换到英特尔模式。
您看到的有效地址并非特定于跳转,您可能在任何需要内存操作数的指令中遇到它。
在英特尔语法中,这看起来像:jmp [0x804a140 + 4 * eax]。这是一个间接跳转,从内存地址0x804a140 + 4 * eax获取跳转目标。这可能是所谓的跳转表中的一项。
【讨论】: