Was bedeutet "dword ptr"?

123

Könnte jemand erklären, was das bedeutet? (Intel Syntax, x86, Windows)

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

Antworten:

119

Das dword ptrTeil wird als Größenanweisung bezeichnet. Diese Seite erklärt sie, aber es war nicht möglich, direkt auf den richtigen Abschnitt zu verlinken.

Grundsätzlich bedeutet dies, dass "die Größe des Zieloperanden 32 Bit beträgt". Dies bedeutet also bitweise UND den 32-Bit-Wert an der Adresse, die berechnet wird, indem der Inhalt des ebpRegisters genommen und vier mit 0 subtrahiert werden.

entspannen
quelle
72
Das "d" in "dword" steht für "double". Ein Wort ist 16 Bit.
JeremyP
Für weitere Informationen besuchen Sie diesen Link
Alex Mathew
25
Warum wird das PTRTeil benötigt? Reicht dword nicht aus, um die Größe zu kodieren? NASM verwendet kein ptrAFAIK.
Ciro Santilli 法轮功 冠状 病. 事件 20
1
@JeremyP Der Wortmittelwert ändert sich je nach Prozessor. Können Sie nach dem Lesen dieses Artikels noch einmal sagen, dass das Wort 16 Bit ist, oder Sie definieren nur die einfache Bedeutung des Wortes, das zwei Bytes bedeutet? 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 Die Frage ist mit "x86" gekennzeichnet, daher sprechen wir speziell über die Intel x86-Architektur, in der ein Wort 16 Bit breit ist. Laut Ihrem Artikel hat sogar der x86_64 eine Wortgröße von 16 Bit.
JeremyP
7

Betrachten Sie die Abbildung in dieser anderen Frage . ebp-4ist Ihre erste lokale Variable und als Dword-Zeiger die Adresse einer 32-Bit-Ganzzahl, die gelöscht werden muss. Vielleicht beginnt Ihre Quelle mit

Object x = null;
mico
quelle
3

Es ist eine 32-Bit-Deklaration. Wenn Sie am Anfang einer Assembly-Datei die Anweisung [Bits 32] eingeben, müssen Sie DWORD PTR nicht eingeben. Also zum Beispiel:

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