在这种情况下,jmp 指令如何在 att 汇编中工作

Posted

技术标签:

【中文标题】在这种情况下,jmp 指令如何在 att 汇编中工作【英文标题】:How does the jmp instruction work in att assembly in this instance 【发布时间】:2021-11-07 13:49:33 【问题描述】:

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

    jmp    *0x804a140(,%eax,4)

究竟如何使用 %eax 寄存器和 4 与跳转指令?我以前从未见过 jmp 这样使用过。

【问题讨论】:

【参考方案1】:

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

您看到的有效地址并非特定于跳转,您可能在任何需要内存操作数的指令中遇到它。

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

【讨论】:

这对代码很有意义。我只是不确定在 AT&T 语法中是如何阅读的,并且在线搜索使它变得更加混乱。谢谢!

以上是关于在这种情况下,jmp 指令如何在 att 汇编中工作的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )

Android 逆向x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )

汇编指令JMP是啥意思?

汇编指令JMP是啥意思?

汇编--控制转移指令 jmp

汇编语言中的call是啥意思