В чем разница между ds: 0x402000 и DWORD PTR ds: 0x402000 в сборке x86? - PullRequest
0 голосов
/ 24 октября 2018

x86 assembly - intel syntax

, как вы можете видеть на картинке, я не могу понять разницу между DWORD PTR ds: 0x402000 и ds: 0x402000 .в чем синтаксическая разница между ними.оба получают 4 байта из 0x402000 и сохраняют их в регистрах eax и ecx.но почему синтаксис такой разницы?

1 Ответ

0 голосов
/ 24 октября 2018

Нет никакой разницы.Однако загрузка в EAX использует краткую кодировку.

Я не могу скопировать / вставить что-либо из ваших дрянных текстовых изображений, но в http://felixcloutier.com/x86/MOV.html обратите внимание, что есть специальная A1 код операции для загрузки в AX / EAX / RAX.По какой-то причине objdump решает опустить DWORD PTR в этом случае.

Размер операнда DWORD уже подразумевается регистрами, поэтому он не нужен.

(Мы можем сказать, что это 32-битовый код, а не x86-64, потому что этот код операции будет использовать 64-битный абсолютный адрес в длинном режиме, если нет префикса размера адреса.)

...