| Zeile 1: | Zeile 1: | ||
| − | Das EFLAGS (Programmstatus und Kontrollregister) Register ist 32 Bit groß, wobei jedes Bit ein Flag repräsentiert. Es beinhaltet Status-Informationen über das laufende Programm und erlaubt anwendungsbasierte Prozessorkontrolle. Das Register kann nicht komplett verändert werden, es können nur die einzelnen Flags gesetzt oder gelöscht werden, meistens auch nur indirekt, in der Form das ein aufgerufener Befehl ein Flag als | + | Das EFLAGS (Programmstatus und Kontrollregister) Register ist 32 Bit groß, wobei jedes Bit ein Flag repräsentiert. Es beinhaltet Status-Informationen über das laufende Programm und erlaubt anwendungsbasierte Prozessorkontrolle. Das Register kann nicht komplett verändert werden, es können nur die einzelnen Flags gesetzt oder gelöscht werden, meistens auch nur indirekt, in der Form das ein aufgerufener Befehl ein Flag als Nebeneffekt ändert. |
{| {{Prettytable}} align="right" | {| {{Prettytable}} align="right" | ||
| − | |+ | + | |+ EFLAGS-Register |
|- | |- | ||
! Bit !! Beschreibung | ! Bit !! Beschreibung | ||
| Zeile 55: | Zeile 55: | ||
=== Statusflags === | === Statusflags === | ||
| − | Die Statusflags (Bits 0,2,4,6,7,11) geben das Ergebnis einer | + | Die Statusflags (Bits 0, 2, 4, 6, 7, 11) geben das Ergebnis einer arithmetischen Operation an (z. B.: ADD, SUB, MUL, DIV). Verwendet werden sie normalerweise in Verbindung mit bedingten Sprüngen, sets, movs und loops (Jcc, SETcc, MOVcc, LOOPcc; cc = conditional code). |
==== CF - Carry Flag (Bit 0) ==== | ==== CF - Carry Flag (Bit 0) ==== | ||
| − | Zeigt einen Overflow bei | + | Zeigt einen Overflow bei vorzeichenlosen Berechnungen an. |
==== PF - Parity Flag (Bit 2) ==== | ==== PF - Parity Flag (Bit 2) ==== | ||
| − | Gesetzt wenn das niederwertige Byte des Ergebnisses eine gerade Anzahl an | + | Gesetzt, wenn das niederwertige Byte des Ergebnisses eine gerade Anzahl an gesetzten Bits enthält. |
==== AF - Auxiliary Carry Flag (Bit 4) ==== | ==== AF - Auxiliary Carry Flag (Bit 4) ==== | ||
| − | Gesetzt wenn ein Übertrag von Bit 3 auf Bit 4 stattgefunden hat.<br /> | + | Gesetzt, wenn ein Übertrag von Bit 3 auf Bit 4 stattgefunden hat.<br /> |
| − | Wird hauptsächlich für [[BCD]] Berechnungen verwendet. | + | Wird hauptsächlich für [[BCD]]-Berechnungen verwendet. |
==== ZF - Zero Flag (Bit 6) ==== | ==== ZF - Zero Flag (Bit 6) ==== | ||
| − | Gesetzt wenn das Ergebnis 0 ist. | + | Gesetzt, wenn das Ergebnis 0 ist. |
==== SF - Sign Flag (Bit 7) ==== | ==== SF - Sign Flag (Bit 7) ==== | ||
| − | Entspricht dem | + | Entspricht dem höchstwertigen Bit des Ergebnisses, also dem Vorzeichenbit bei vorzeichenbehafteten Berechnungen.<br /> |
0 steht für einen positiven Wert und 1 für einen negativen. | 0 steht für einen positiven Wert und 1 für einen negativen. | ||
==== OF - Overflow Flag (Bit 11) ==== | ==== OF - Overflow Flag (Bit 11) ==== | ||
| − | Gesetzt wenn ein Overflow bei einer signed-Zahl stattgefunden hat. | + | Gesetzt, wenn ein Overflow bei einer signed-Zahl stattgefunden hat. |
=== Controlflags === | === Controlflags === | ||
==== DF - Direction Flag (Bit 10) ==== | ==== DF - Direction Flag (Bit 10) ==== | ||
Gibt die Richtung bei Stringoperationen an. Wenn 0 wird der Zeiger inkrementiert, bei 1 dekrementiert.<br /> | Gibt die Richtung bei Stringoperationen an. Wenn 0 wird der Zeiger inkrementiert, bei 1 dekrementiert.<br /> | ||
| − | Dieses Flag kann mit '''CLD'''(Clear Direction Flag) und '''STD'''(Set Direction Flag) verändert werden. | + | Dieses Flag kann mit '''CLD''' (Clear Direction Flag) und '''STD''' (Set Direction Flag) verändert werden. |
=== Systemflags === | === Systemflags === | ||
==== TF - Trap Flag (Bit 8) ==== | ==== TF - Trap Flag (Bit 8) ==== | ||
| − | Für | + | Für schrittweises Debuggen. |
==== IF - Interrupt Enable Flag (Bit 9) ==== | ==== IF - Interrupt Enable Flag (Bit 9) ==== | ||
| − | Wenn gesetzt wird auf Interrupts reagiert, | + | Wenn es gesetzt ist, dann wird auf Interrupts reagiert, ist es gelöscht, so werden diese ignoriert (Ausnahme: [[Non Maskable Interrupt]]).<br /> |
| − | Kann mit '''CLI'''(Clear Interruptflag) und '''STI'''(Set Interruptflag) geändert werden. | + | Kann mit '''CLI''' (Clear Interruptflag) und '''STI''' (Set Interruptflag) geändert werden. |
==== IOPL - I/O Privilege Field (Bits 12 und 13) ==== | ==== IOPL - I/O Privilege Field (Bits 12 und 13) ==== | ||
| − | + | Gibt an, ab welcher Privilegstufe "Systembefehle" ('''IN''', '''OUT''', Zugriff auf Kontrollregister, ...) verwendet werden dürfen. | |
==== NT - Nested Task Flag (Bit 14) ==== | ==== NT - Nested Task Flag (Bit 14) ==== | ||
| − | Gesetzt wenn der akuelle Task eine Verbindung zum vorherigen hat. | + | Gesetzt, wenn der akuelle Task eine Verbindung zum vorherigen hat. |
==== RF - Resume Flag (Bit 16) ==== | ==== RF - Resume Flag (Bit 16) ==== | ||
Steuert die Reaktion des Prozessors auf eine Debug Exception. | Steuert die Reaktion des Prozessors auf eine Debug Exception. | ||
| − | ==== VM - Virtual | + | ==== VM - Virtual 8086 Mode Flag (Bit 17) ==== |
| − | Gesetzt um im Virtual | + | Gesetzt, um im [[Virtual 8086 Mode]] zu arbeiten. |
==== AC - Alignment Check Flag (Bit 18) ==== | ==== AC - Alignment Check Flag (Bit 18) ==== | ||
| − | Wenn dieses Flag und das AM-Bit im [[Control Register|CR0-Register]] gesetzt ist wird auf Speicherausrichtung geprüft. | + | Wenn dieses Flag und das AM-Bit im [[Control Register|CR0-Register]] gesetzt ist, wird auf Speicherausrichtung geprüft. |
==== VIF - Virtual Interrupt Flag (Bit 19) ==== | ==== VIF - Virtual Interrupt Flag (Bit 19) ==== | ||
| − | + | Das Interruptflag für den Virtual 8086 Mode. | |
==== VIP - Virtual Interrupt Pending Flag (Bit 20) ==== | ==== VIP - Virtual Interrupt Pending Flag (Bit 20) ==== | ||
| − | + | Gesetzt, um anzuzeigen, dass ein Interrupt abgearbeitet werden muss (Das Betriebssystem setzt und löscht dieses Flag, der Prozessor liest es nur). Genutzt wird es in Verbindung mit dem Virtual Interrupt Flag. | |
| − | |||
| − | |||
| − | |||
==== ID - Identification Flag (Bit 21) ==== | ==== ID - Identification Flag (Bit 21) ==== | ||
| Zeile 126: | Zeile 123: | ||
* SAHF | * SAHF | ||
| − | [[ | + | [[Kategorie:Hardware]] |
| − | [[ | + | [[Kategorie:x86]] |