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

时间:2018-10-24 03:07:49

标签: x86 reverse-engineering disassembly machine-code

x86 assembly - intel syntax

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

1 个答案:

答案 0 :(得分:2)

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

我无法从您cr脚的文本图像中复制/粘贴任何内容,但是请注意http://felixcloutier.com/x86/MOV.html中有一个特殊的A1操作码,可以加载到AX / EAX / RAX中。由于某种原因,objdump决定在这种情况下忽略DWORD PTR

寄存器已经隐含了DWORD操作数的大小,因此不需要。

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