【问题标题】:what does movzwl 0x402ac0(%rax,%rax,1),%eax and movslq 0x402740(,%rsi,4),%rdx mean in x86-64 assembly?movzwl 0x402ac0(%rax,%rax,1),%eax 和 movslq 0x402740(,%rsi,4),%rdx 在 x86-64 程序集中是什么意思?
【发布时间】:2020-02-16 05:49:45
【问题描述】:

我正在做一些关于组装的项目,我遇到了以下命令:

lea    (%rsi,%rsi,4),%rax
lea    (%r9,%rax,2),%rsi
lea    (%r8,%rdx,4),%rax
movzwl 0x402ac0(%rax,%rax,1),%eax
movslq 0x402740(,%rsi,4),%rdx

这里的 movzwl 和 movslq 是什么意思? 我知道他们将位从源移动到目标,但在此之前他们也进行了一些计算,我不明白他们如何计算然后将这些位移动到结果中。

谁能帮我解决这个问题?谢谢!

【问题讨论】:

标签: assembly x86 reverse-engineering att addressing-mode


【解决方案1】:

movzwl 从源中读取一个字(16 位),将其零扩展为 long(32 位),并将其写入目标寄存器。

movslq 从源读取一个 long(32 位),将其符号扩展为一个 qword(64 位,将第 31 位复制到 63:32 位),并将其写入目标寄存器。

寻址模式 0x402ac0(%rax,%rax,1) 计算 rax+rax+0x402ac0 并将其用作操作数的地址。

寻址模式 0x402740(,%rsi,4) 计算 rsi*4+0x402740 并将其用作操作数的地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 2012-06-15
    • 2022-12-12
    • 1970-01-01
    • 2014-01-15
    相关资源
    最近更新 更多