Register — Änderungen 4899 → 4901

Zeile 35: Zeile 35:
 
| colspan="4" style="background:lightgrey" align="center" | ? = A, B, C, D
 
| colspan="4" style="background:lightgrey" align="center" | ? = A, B, C, D
 
|}
 
|}
 +
 +
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
 +
* '''EAX''' : Für Rechenoperatioen, als Rückgabewert in [[C]]
 +
* '''ECX''' : Als Zähler
  
 
===Indexregister===
 
===Indexregister===
Zeile 52: Zeile 56:
 
| colspan="4" style="background:lightgrey" align="center" | ? = D, S
 
| colspan="4" style="background:lightgrey" align="center" | ? = D, S
 
|}
 
|}
 +
 +
Die Indexregister werden oft als Indexe in Datenbereichen verwendet. Dabei zeigt
 +
* '''ESI''' : Auf den Quelloperanden
 +
* '''EDI''' : Auf den Zieloperanden
  
 
===Zeigerregister===
 
===Zeigerregister===
Zeile 69: Zeile 77:
 
| colspan="4" style="background:lightgrey" align="center" | ? = B, S
 
| colspan="4" style="background:lightgrey" align="center" | ? = B, S
 
|}
 
|}
 +
 +
Die Zeigerregister werden genutzt, um auf Stellen im Speicher zu zeigen.
 +
* '''ESP''' : Zeigt ''immer'' auf den aktuellen Stack
 +
* '''EBP''' : Wird meistens für Stackframes und lokale Variablen bei Funktionsaufrufen verwendet
  
 
===Instruktionsregister===
 
===Instruktionsregister===
Zeile 84: Zeile 96:
 
| colspan="2" align="center" | IP
 
| colspan="2" align="center" | IP
 
|}
 
|}
 +
 +
Das Instruktionsregister '''EIP''' 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 96: Zeile 110:
 
| colspan="4" align="center" | EFLAGS
 
| colspan="4" align="center" | EFLAGS
 
|}
 
|}
 +
 +
Das Flagregister '''EFLAGS''' speichert einige Konfigurationsmöglichkeiten und Systemzuständen, beispielweise, ob Interrupts gerade erlaubt sind oder ob ein Übertrag bei einer Addition stattfand.
  
 
===Segmentregister===
 
===Segmentregister===
Zeile 108: Zeile 124:
 
| 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 [[Protected Mode]] auch für die Segmentierung mit Hilfe der [[GDT]] verantwortlich.