x86汇编中的ds:0x402000和DWORD PTR ds:0x402000之间有什么区别?

x86汇编中的ds:0x402000和DWORD PTR ds:0x402000之间有什么区别?,x86,reverse-engineering,disassembly,machine-code,X86,Reverse Engineering,Disassembly,Machine Code,如图所示,我无法理解DWORD PTR ds:0x402000和ds:0x402000之间的区别。它们在句法上有什么不同。两者都从0x402000获取4个字节,并将其存储在eax和ecx寄存器中。但是为什么语法不同呢?没有区别。不过,加载到EAX中使用的是短格式编码 我无法复制/粘贴你的蹩脚文本图像中的任何内容,但请注意,有一个特殊的A1操作码用于加载到AX/EAX/RAX中。出于某种原因,在这种情况下,objdump决定省略DWORD PTR DWORD操作数大小已由寄存器暗示,因此不需要 (


如图所示,我无法理解DWORD PTR ds:0x402000和ds:0x402000之间的区别。它们在句法上有什么不同。两者都从0x402000获取4个字节,并将其存储在eax和ecx寄存器中。但是为什么语法不同呢?

没有区别。不过,加载到EAX中使用的是短格式编码

我无法复制/粘贴你的蹩脚文本图像中的任何内容,但请注意,有一个特殊的
A1
操作码用于加载到AX/EAX/RAX中。出于某种原因,在这种情况下,objdump决定省略
DWORD PTR

DWORD操作数大小已由寄存器暗示,因此不需要


(我们可以看出这是32位代码,而不是x86-64,因为该操作码在长模式下将使用64位绝对地址,除非有地址大小前缀。)

没有区别。不过,加载到EAX中使用的是短格式编码

我无法复制/粘贴你的蹩脚文本图像中的任何内容,但请注意,有一个特殊的
A1
操作码用于加载到AX/EAX/RAX中。出于某种原因,在这种情况下,objdump决定省略
DWORD PTR

DWORD操作数大小已由寄存器暗示,因此不需要


(我们可以看出这是32位代码,而不是x86-64,因为该操作码在长模式下会使用64位绝对地址,除非有地址大小前缀。)

但为什么语法不同?我试着使用nasm和gas汇编程序。但它们仍然不同。请不要发布屏幕输出或源代码的图像。将代码复制并粘贴到您的问题中(编辑问题),选择它并按下问题编辑器工具栏中的
{}
按钮,使其显示为代码。但是为什么语法不同呢?我试着使用nasm和gas汇编程序。但它们仍然不同。请不要发布屏幕输出或源代码的图像。将代码复制并粘贴到问题中(编辑问题),将其选中,然后按问题编辑器工具栏中的
{}
按钮,使其显示为代码。