assembly - 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 这里是什么意思?我知道他们将位从源移动到目的地,但在此之前他们也进行了一些计算,我不明白他们如何计算然后将这些位移动到结果中。
谁能帮我这个?谢谢!
解决方案
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 并将其用作操作数的地址。
推荐阅读
- angular - 如何从组件的子元素中使用指令方法?
- python-3.x - Python Key 错误 - 尝试使用语句时
- python - Python Selenium 多线程将每个线程的值加在一起
- python - 在 python 中向 sqlite3 数据库添加按钮文本
- vue.js - 在具有多个组件的 Vue 中单击事件作为父级
- javascript - 'Nuxt generate' 后 Axios POST 不工作
- php - 为什么我无法使用 VichUploaderBundle 和 Symfony 5 在我的网页上显示图像?
- osgi - Karaf Bundle.getState() 与 bundle:list 中的 bundle 状态不完全匹配
- spring - Spring data jpa避免内存分页和n+1使用规范
- reactjs - 试图在特定页面上隐藏父组件