O que significa `dword ptr`?

123

Alguém poderia explicar o que isso significa? (Intel Sintaxe, x86, Windows)

and     dword ptr [ebp-4], 0
小 太郎
fonte

Respostas:

119

A dword ptrparte é chamada de diretiva de tamanho. Esta página os explica, mas não foi possível direcionar o link para a seção correta.

Basicamente, significa "o tamanho do operando de destino é de 32 bits", portanto, isso vai bit a bit-AND o valor de 32 bits no endereço calculado pegando o conteúdo do ebpregistrador e subtraindo quatro com 0.

desanuviar
fonte
72
O "d" em "dword" significa "duplo". Uma palavra tem 16 bits.
JeremyP
Para obter mais referências, visite este link
Alex Mathew
25
Por que a PTRpeça é necessária? O dword não é suficiente para codificar o tamanho? NASM não usa ptrAFAIK.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
1
@JeremyP A palavra significa está mudando de acordo com os processadores. Depois de ler este artigo, você pode dizer novamente palavra tem 16 bits ou você está apenas definindo o significado simples de palavra que significa dois bytes? Modern processors, including embedded systems, usually have a word size of 8, 16, 24, 32, or 64 bits, while modern general purpose computers usually use 32 or 64 bits. en.wikipedia.org/wiki/Word_(computer_architecture)
uzay95
6
@ uzay95 A questão está marcada como "x86", portanto, estamos falando especificamente sobre a arquitetura Intel x86, na qual uma palavra tem 16 bits de largura. De acordo com seu artigo, mesmo o x86_64 tem um tamanho de palavra de 16 bits.
JeremyP
7

Considere a figura incluída nesta outra questão . ebp-4é sua primeira variável local e, visto como um ponteiro dword, é o endereço de um inteiro de 32 bits que deve ser apagado. Talvez sua fonte comece com

Object x = null;
mico
fonte
3

É uma declaração de 32 bits. Se você digitar no início de um arquivo de montagem a instrução [bits 32], não será necessário digitar DWORD PTR. Então, por exemplo:

[bits 32]
.
.
and  [ebp-4], 0
L4m0r
fonte