在这种情况下,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 数据传送指令 )