Was bedeutet qword ptr [hexvalue] Mittelwert ohne base registrieren
War ich debugging von CLR-code in Assembler, und habe ein Zeile
mov rax, qword ptr [ff4053c0h]
Ich denke qword ptr [ff4053c0h]
bezieht sich auf eine Zeichenfolge, an der ich interessiert bin, aber ff4053c0h
ist nicht auf einen gültigen Speicherbereich. Lesen über qword ptr
es scheint-Referenz auf eine Adresse basierend auf einem Basis-register (z.B. qword ptr [rsp+30h]
ist 30 bytes in den stack), aber ich kann nicht herausfinden, was es bedeutet, ohne Basis registrieren.
- Bezieht es sich auf die Adresse, die Lage spitzt sich zu, indem
ff4053c0h
wie ein quad-word (64 bits). Was auch immer die 64-bit-Wert an der angegebenen Adresse geladen werdenrax
. Wenn die Adresse nicht gültig ist, dann gibt es ein problem. Sind Sie sicher, dass Sie nicht gültig ist?
Du musst angemeldet sein, um einen Kommentar abzugeben.
, Wenn kein base-register ist, sofern, es bedeutet
data segment
(http://www.osdata.com/system/physical/memory.htm). In Ihrem codemov rax, qword ptr [ff4053c0h]
bedeutet "nehmen Sie die 8 bytes aus dem Daten-segment-offset FF4053C0h und legen Sie Sie in die RAX".Als Sie zeigen richtig, die Anwesenheit einer base register wie
rsp
zeigt deutlich an, stack-segment. In deinem Fall, keine base-register Daten-segment.Nun, über die große Anzahl "FF4053C0h", die "4 282 405 824", dann ist es durchaus möglich, 4Gb adressierbaren Speicher (http://wiki.osdev.org/Protected_Mode), die bestätigt, dass Ihr code-Zeile gültig, und es ist der Zugriff auf offset FF4053C0h in einem riesigen Daten-segment (http://www.ece.unm.edu/~jimp/310/slides/micro_arch2.html).
Anderen Quelle = Montage: Mithilfe des Data Segment Register (DS) .
Ohne komplizierende die Dinge ohne guten Grund:
Es bedeutet, dass ein 64-bit-Wert gelesen wird, die von der Adresse
0ff4053c0h
in das registerRAX
.Die Adresse muss gültig sein, erneut zu prüfen.
Die
QWORD PTR
ist nur eine Größe specifier (redundant hier, aber es verbessert die Lesbarkeit zu verbessern), ist es nicht mit mit einer base registrieren.Wenn Sie wirklich daran interessiert sind, in die verschiedenen Adressierungsarten der CPU haben, können Sie Lesen Sie die Intel-Handbücher (Google).
Bewegen Sie eine 64-bit-Wert aus dem Speicher in das rax-register. Lesen des Wertes von der Adresse ff4053c0h. qword ptr ist ein Hinweis für den assembler zu erstellen, bewegen Sie op-code (Maschinencode) mit einem 64-bit-Konstante Adresse. Der Wert ist ein 32-bit-Wert (8 hex-Ziffern => 8-mal eine hex-Ziffer/Buchstabe => 8 * 4bits => 32bit).
Gibt es bewegen, op-codes, die Unterstützung von 32bit-Operationen, aber (wahrscheinlich überprüfen Sie die Spezifikationen für die CPU/Mode) nicht für das laden von Speicher in ein 64bit register. So qword ist erforderlich, um sicherzustellen, die assembler, die Sie wirklich wollen, um express eine 64-bit-Adresse.
Für Ihren Kommentar über die Adresse verweist auf undefinierten Speicher (siehe Kommentare für acepted Antwort), verstehen, dass heutzutage jeder Prozess hat eine virtuelle Tabelle im Speicher zugewiesen. Den virtuellen Speicher bildet im Prinzip eine logische Adresse auf eine Adresse im realen Speicher. Es verhindert, dass Prozesse aus zu sehen, und die änderung Speicher, gehören nicht zu den Verfahren, bietet eine große Stabilität, um ein laufendes system.
Dass zwei Prozesse, die beide teilen sich ein Teil des Speichers ist es möglich, dass jeder einzelne Prozess finden Sie in der sehr gleichen physikalischen Speicher in verschiedene logische Adressen. Das Betriebssystem entscheidet, was den virtuellen Speicher eines jeden Prozesses aussieht.
Mapping wird auf einer pro-Seite-Ebene (z.B. Seite=4 KB) und der Prozessor muss die eigentliche mapping-intern.
Dieses Konzept ist sehr wahr für das mapping von Dateien in den Speicher und die gemeinsame Nutzung der Speicher für verschiedene Prozesse. Auf diese Weise können Sie die Karte auf eine 2GB-Datei in den Speicher und 10 Prozesse gleichzeitig arbeiten mit der selben Datei zugeordnet, während nur (höchstens) 2 GB tatsächlichen Speicher verbraucht. Es ist die Art, wie Datei-io-caching wird vor allem auf die OS-Ebene.