X86-64

Aus Lowlevel
Wechseln zu:Navigation, Suche

Die x86-64-Architektur (bzw. x64 oder AMD64) ist eine Erweiterung der x86-Architektur um 64-Bit-Register, Instruktionen zur Datenverarbeitung mit diesen Registern und um einen neuen Modus, den Long Mode. Der Long Mode erlaubt überhaupt erst die Benutzung der 64-Bit-Register. Darüber hinaus wurden einige veraltete aus dem Protected Mode bekannte Features entfernt, um gewisse Optimierungen möglich zu machen.


CPU

Register

Übersicht

Bits Register
8 AL, BL, CL, DL, DIL, SIL, BPL, SPL, R8L, R9L, R10L, R11L, R12L, R13L, R14L, R15L
16 AX, BX, CX, DX, DI, SI, BP, SP, CS, DS, ES, FS, GS, SS, R8W, R9W, R10W, R11W, R12W, R13W, R14W, R15W
32 EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, EIP, EFLAGS, R8D, R9D, R10D, R11D, R12D, R13D, R14D, R15D
64 RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, RIP, RFLAGS, R8, R9, R10, R11, R12, R13, R14, R15
128 XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15


Allzweckregister

Bytes
7 6 5 4 3 2 1 0
R?X
E?X
?X
?H ?L
? = A, B, C, D
Bytes
7 6 5 4 3 2 1 0
R?
R?D
R?W
R?B
? = 8, 9, 10, 11, 12, 13, 14, 15
Die Allzweckregister können, wie ihr Name schon andeutet eigentlich für fast jeden Zweck genutzt werden. Trotzdem gibt es einige gebräuchliche Nutzungen, siehe hier


Achtung!

Die ?H-Register sind nur in Funktionen nutzbar, die keinen REX-Präfix benutzen!
Die R?B Register heißen in manchen Compilern oder Assemblern R?L


Indexregister

Bytes
7 6 5 4 3 2 1 0
R?I
E?I
?I
?IL
? = D, S
Die Indexregister werden oft als Indexe in Datenbereichen verwendet, siehe hier.


Achtung!

Die ?IL-Register sind nur in Funktion nutzbar, die einen REX-Präfix benutzen!


Zeigerregister

Bytes
7 6 5 4 3 2 1 0
R?P
E?P
?P
?PL*
? = B, S
Die Zeigerregister werden genutzt, um auf Stellen im Speicher zu zeigen, siehe hier


Achtung!

Die ?PL-Register sind nur in Funktion nutzbar, die einen REX-Präfix benutzen!

Instruktionsregister

Bytes
7 6 5 4 3 2 1 0
RIP
EIP
IP
Das Instruktionsregister RIP zeigt immer auf den nächsten auszuführenden Befehl. Es kann nicht direkt geändert werden, sondern nur über Funktion wie jmp, call oder ret


Flagregister

Hauptartikel: RFLAGS

Bytes
7 6 5 4 3 2 1 0
RFLAGS
EFLAGS
FLAGS
Das Flagregister RFLAGS speichert einige Konfigurationsmöglichkeiten und Systemzuständen, beispielweise, ob Interrupts gerade erlaubt sind oder ob ein Übertrag bei einer Addition stattfand.

Segmentregister

Bytes
1 0
?S
? = C, D, E, F, G, S
Die Segmentregister geben die Basisadresse des aktuellen Segments an, siehe hier. Die Segmentregister sind im Long Mode auch für die Segmentierung mit Hilfe der GDT verantwortlich.


Achtung!

Im Long Mode werden viele Bits der GDT-Einträge ignoriert!


SSE-Register

Hauptartikel: SSE

Floatingpointregister

Bytes
9 8 7 6 5 4 3 2 1 0
ST?
? = 0, 1, 2, 3, 4, 5, 6, 7
Bits
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Control Register


Bits
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Status Register


Bits
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Tag Register
Bits
9 8 7 6 5 4 3 2 1 0
FOP


sonstige Hardware

siehe: x86


Weblinks