| 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? | + | | 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: | ||
|} | |} | ||
| − | ''' | + | {{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 | ||
|} | |} | ||
| − | ''' | + | {{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 | ||
|} | |} | ||
| − | ''' | + | {{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=== | ||