Register — Änderungen 4924 → 5098

Zeile 129: Zeile 129:
 
* '''DS''' für das ''Data-Segment''
 
* '''DS''' für das ''Data-Segment''
 
* '''SS''' für das ''Stack-Segment''
 
* '''SS''' für das ''Stack-Segment''
−
''ES'', ''FS'' und ''GS'' sind zusätzliche Daten-Segmente.
+
'''ES''', '''FS''' und '''GS''' sind zusätzliche Daten-Segmente.
  
 
Die Segmentregister sind im [[Protected Mode]] auch für die Segmentierung mit Hilfe der [[GDT]] verantwortlich.
 
Die Segmentregister sind im [[Protected Mode]] auch für die Segmentierung mit Hilfe der [[GDT]] verantwortlich.
Zeile 203: Zeile 203:
 
|-
 
|-
 
| colspan="7" style="background:lightgrey" |
 
| colspan="7" style="background:lightgrey" |
−
| align="center" | R?L
+
| align="center" | R?B
 
|-
 
|-
 
| colspan="8" style="background:lightgrey" align="center" | ? = 8, 9, 10, 11, 12, 13, 14, 15
 
| colspan="8" style="background:lightgrey" align="center" | ? = 8, 9, 10, 11, 12, 13, 14, 15
Zeile 209: Zeile 209:
  
 
|}
 
|}
−
'''Die ?H-Register sind nur in Funktion nutzbar, die KEINEN REX-Präfix benötigen!'''
+
{{Achtung|Text= ''Die '''?H'''-Register sind nur in Funktion nutzbar, die KEINEN REX-Präfix benötigen!'' <br/> ''Die '''R?B''' Register heißen in manchen Compilern oder Assemblern '''R?L'''''}}
 +
 
 +
Die Allzweckregister können, wie ihr Name schon andeutet eigentlich für fast jeden Zweck genutzt werden. Trotzdem gibt es einige gebräuchliche Nutzungen, zum Beispiel
 +
* '''RAX''' : Für Rechenoperatioen, als Rückgabewert in [[C]]
 +
* '''RCX''' : Als Zähler
  
 
===Indexregister===
 
===Indexregister===
Zeile 237: Zeile 241:
 
| colspan="8" style="background:lightgrey" align="center" | ? = D, S
 
| colspan="8" style="background:lightgrey" align="center" | ? = D, S
 
|}
 
|}
−
'''Die ?IL-Register sind nur in Funktion nutzbar, die einen REX-Präfix benötigen!'''
+
{{Achtung|Text= ''Die '''?IL'''-Register sind nur in Funktion nutzbar, die einen REX-Präfix benötigen!''}}
 +
 
 +
Die Indexregister werden oft als Indexe in Datenbereichen verwendet. Dabei zeigt
 +
* '''RSI''' : Auf den Quelloperanden
 +
* '''RDI''' : Auf den Zieloperanden
  
 
===Zeigerregister===
 
===Zeigerregister===
Zeile 265: Zeile 273:
 
| colspan="8" style="background:lightgrey" align="center" | ? = B, S
 
| colspan="8" style="background:lightgrey" align="center" | ? = B, S
 
|}
 
|}
−
'''Die ?PL-Register sind nur in Funktion nutzbar, die einen REX-Präfix benötigen!'''
+
{{Achtung|Text= ''Die '''?PL'''-Register sind nur in Funktion nutzbar, die einen REX-Präfix benötigen!''}}
 +
 
 +
Die Zeigerregister werden genutzt, um auf Stellen im Speicher zu zeigen.
 +
* '''RSP''' : Zeigt ''immer'' auf den aktuellen Stack
 +
* '''RBP''' : Wird meistens für Stackframes und lokale Variablen bei Funktionsaufrufen verwendet
  
 
===Instruktionsregister===
 
===Instruktionsregister===
Zeile 288: Zeile 300:
 
| colspan="2" align="center" | IP
 
| colspan="2" align="center" | 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===
 
===Flagregister===
Zeile 307: Zeile 321:
 
| colspan="4" align="center" | EFLAGS
 
| colspan="4" align="center" | EFLAGS
 
|}
 
|}
 +
 +
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===
 
===Segmentregister===
Zeile 319: Zeile 335:
 
| colspan="2" style="background:lightgrey" align="center" | ? = C, D, E, F, G, S
 
| colspan="2" style="background:lightgrey" align="center" | ? = C, D, E, F, G, S
 
|}
 
|}
 +
 +
 +
Die Segmentregister geben die Basisadresse des aktuellen Segments an. Dabei steht
 +
* '''CS''' für das ''Code-Segment''
 +
* '''DS''' für das ''Data-Segment''
 +
* '''SS''' für das ''Stack-Segment''
 +
'''ES''', '''FS''' und '''GS''' sind zusätzliche Daten-Segmente.
 +
 +
Die Segmentregister sind im [[Long Mode]] auch für die Segmentierung mit Hilfe der [[GDT]] verantwortlich.
 +
 +
{{Achtung|Text= Im [[Long Mode]] werden viele Bits der [[GDT]]-Einträge '''ignoriert'''!}}
  
 
===SSE-Register===
 
===SSE-Register===