【问题标题】:What does this line of assembly code do?这行汇编代码是做什么的?
【发布时间】:2015-01-14 16:27:30
【问题描述】:

我知道这行代码将一些东西移到 eax 寄存器中,但是什么 dword ptr [edx +15Ch] 做什么?

mov eax, dword ptr [edx + 15Ch]

它是否取edx中的值并添加15C = Q,然后将地址Q中的值加载到eax中? 如果是这样,这个 conetxt 中的 dword ptr 是什么意思?

【问题讨论】:

  • 是的。 dword ptr 只是一个尺寸规格,但无论如何,尺寸从 eax 目标是显而易见的。
  • 那么,dword指定大小,ptr指定Q是指向某个内存位置的地址?这些信息对 CPU 有用吗?
  • dword ptr 只是一个句法元素,一些汇编程序只使用dword 其他人使用大小后缀。 cpu 只看到机器代码,这些东西只是帮助汇编程序在模棱两可时选择正确的指令。在这种情况下,eax 已经指定了大小。
  • 另一个需要指定大小的dword内存访问:mov dword ptr[edx+15Ch], 1

标签: assembly x86


【解决方案1】:

是的,这正是它的作用。

dword ptr 修饰符在这里是多余的,因为寄存器已经是 32 位,但有时需要告诉汇编器在无法直接推断时它应该处理什么类型的数据。例如

push dword ptr [edx + 15Ch]

【讨论】:

    猜你喜欢
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2013-08-13
    • 2022-01-20
    • 1970-01-01
    • 2015-12-23
    相关资源
    最近更新 更多