首页 > 解决方案 > movzwl 0x402ac0(%rax,%rax,1),%eax 和 movslq 0x402740(,%rsi,4),%rdx 在 x86-64 程序集中是什么意思?

问题描述

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

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 这里是什么意思?我知道他们将位从源移动到目的地,但在此之前他们也进行了一些计算,我不明白他们如何计算然后将这些位移动到结果中。

谁能帮我这个?谢谢!

标签: assemblyx86reverse-engineeringattaddressing-mode

解决方案


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 并将其用作操作数的地址。


推荐阅读