【问题标题】:What is meant by this Assembly Code? [duplicate]这个汇编代码是什么意思? [复制]
【发布时间】:2013-11-20 08:11:01
【问题描述】:

jmp *0x804a260(,%eax,4)

例如,eax 包含 2。这将需要 2 * 4 并将其添加到 0x804a260 给您 0x804a268,然后会跳转到该位置,对吗?

【问题讨论】:

  • 自从我完成汇编程序以来已经很长时间了,但是从内存中 JMP 是跳转命令,所以在我看来它跳转到特定的指针/地址并正确传输 eax 寄存器的值跨度>

标签: assembly x86 att


【解决方案1】:

jmp *0x804a260(,%eax,4)

上面的 ATT 语法和下面 intel 语法一样:

jmp dword ptr [eax*4 + 0x804a260]

它计算内存位置eax*4 + 0x804a260,从该位置读取一个双字,将其视为地址并跳转到该地址。

使用您的示例,假设 eax 是 2。计算的地址是 0x804a268。此外,假设0x804a268 它包含0xbadf00d。这意味着在执行jmp 之后,程序计数器eip 将尝试在内存位置0xbadf00d 处执行下一条指令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多