如图所示,我无法理解 DWORD PTR ds:0x402000 和 ds:0x402000 之间的区别。它们之间的语法差异是什么?两者都从0x402000获取4个字节并将其存储在eax和ecx寄存器中。但是为什么语法不同?
答案 0 :(得分:2)
没有区别。不过,EAX的加载使用的是短格式编码。
我无法从您cr脚的文本图像中复制/粘贴任何内容,但是请注意http://felixcloutier.com/x86/MOV.html中有一个特殊的A1
操作码,可以加载到AX / EAX / RAX中。由于某种原因,objdump决定在这种情况下忽略DWORD PTR
。
寄存器已经隐含了DWORD操作数的大小,因此不需要。
(我们可以说这是32位代码,而不是x86-64,因为除非有地址大小的前缀,否则该操作码将在长模式下使用64位绝对地址。)