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

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

    jmp    *0x804a140(,%eax,4)

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

【问题讨论】:

    标签: assembly x86 att


    【解决方案1】:

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

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

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

    【讨论】:

    • 这对代码很有意义。我只是不确定在 AT&T 语法中是如何阅读的,并且在线搜索使它变得更加混乱。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2017-06-21
    • 2018-01-19
    相关资源
    最近更新 更多