Co znaczy „dword ptr”?

123

Czy ktoś mógłby wyjaśnić, co to oznacza? (Składnia Intel, x86, Windows)

and     dword ptr [ebp-4], 0
小 太郎
źródło

Odpowiedzi:

119

dword ptrCzęść nazywana jest dyrektywa rozmiar. Ta strona wyjaśnia je, ale nie było możliwe bezpośrednie łącze do właściwej sekcji.

Zasadniczo oznacza to, że „rozmiar argumentu docelowego wynosi 32 bity”, więc będzie to bitowe ORAZ 32-bitową wartość pod adresem obliczoną przez pobranie zawartości ebprejestru i odjęcie czterech przez 0.

rozwijać
źródło
72
Litera „d” w „dword” oznacza „double”. Słowo ma 16 bitów.
JeremyP,
Aby uzyskać więcej informacji, odwiedź ten link
Alex Mathew
25
Dlaczego ta PTRczęść jest potrzebna? Czy dword nie wystarczy do zakodowania rozmiaru? NASM nie używa ptrAFAIK.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
1
@JeremyP Słowo średni zmienia się w zależności od procesorów. Czy po przeczytaniu tego artykułu możesz powtórzyć, że słowo ma 16 bitów, czy też definiujesz tylko proste znaczenie słowa, które oznacza dwa bajty? 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 Pytanie jest oznaczone jako „x86”, więc mówimy konkretnie o architekturze Intel x86, w której słowo ma 16 bitów szerokości. Zgodnie z twoim artykułem nawet x86_64 ma rozmiar słowa 16 bitów.
JeremyP
7

Rozważ liczbę zawartą w tym drugim pytaniu . ebp-4jest twoją pierwszą lokalną zmienną i, widziany jako wskaźnik dword, jest adresem 32-bitowej liczby całkowitej, która musi zostać wyczyszczona. Może Twoje źródło zaczyna się od

Object x = null;
mico
źródło
3

Jest to deklaracja 32-bitowa. Jeśli na początku pliku asemblacyjnego wpiszesz instrukcję [bity 32], nie musisz wpisywać DWORD PTR. Na przykład:

[bits 32]
.
.
and  [ebp-4], 0
L4m0r
źródło