Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Statusregister

Es gibt Interrupts, die vom Status des Interrupt-Enable-Flags unberührt bleiben. Diese nennt man nicht-maskierbare Interrupts (NMI). Manche CPUs haben …

Inhalt4 Abschnitte
  1. 1. Aufgabe und Einsatz
  2. 2. Flags für Ergebnisse und Vergleiche
  3. 3. Interrupts und Dezimalrechnung
  4. 4. Architekturen ohne übliche Flags

Aufgabe und Einsatz

Ein Statusregister, auch Zustandsregister, condition code register (CCR), Programmstatuswort (PSW) oder Flagregister, ist ein spezielles Register im Rechenwerk eines Prozessors. Es enthält einzelne Bits, die Flags genannt werden. Die arithmetisch-logische Einheit (ALU) setzt sie abhängig von der zuletzt ausgeführten Rechenoperation, etwa bei einem Überlauf oder einem negativen Ergebnis. Einige Flags lassen sich auch direkt durch Anweisungen ändern. Manche Prozessoren, zum Beispiel der 6502, setzen die meisten Statusflags bereits bei reinen Ladeoperationen.

Bedingte Sprungbefehle richten sich ausschließlich nach diesen Flags. Außerdem beeinflusst ihr Zustand einige Rechenoperationen der ALU. Der Inhalt des Statusregisters kann auf dem Stack gesichert werden. Bei einem Interrupt geschieht dies automatisch, damit das unterbrochene Programm nach Ende des Interrupts ungestört weiterarbeiten kann.

Welche Flags vorhanden sind, hängt von der CPU-Architektur ab. Häufig gehören dazu Carry- oder Borrow-Flag, Zero-Flag, Sign- beziehungsweise Negative-Flag, Overflow-Flag, Adjust-Flag, Parity-Flag, Interrupt-Flag(s) und BCD-Flag.

Flags für Ergebnisse und Vergleiche

Das Carry-Flag zeigt bei vorzeichenlosen Operanden an, dass bei der letzten Rechenoperation ein Übertrag auftrat. Bei einer Schiebeoperation gibt es den Wert des herausgeschobenen Bits an.

Das Zero-Flag ist gesetzt, wenn das letzte Rechenergebnis Null war. Bei einem Vergleich werden zwei Operanden intern subtrahiert, ohne sie zu verändern. Das Zero-Flag zeigt dann an, ob beide Operanden gleich sind.

Vorzeichenbehaftete Zahlen werden in heutigen Mikroprozessoren im Zweierkomplement dargestellt. Bei negativen Zahlen ist das höchstwertige Bit gesetzt; entsprechend wird das Sign- oder Negative-Flag gesetzt.

Das Overflow-Flag signalisiert einen Überlauf bei einer Rechnung mit vorzeichenbehafteten Operanden. Beim Vergleich vorzeichenbehafteter Werte benötigen bedingte Sprungbefehle sowohl das Overflow-Flag als auch das Sign-Flag.

Das Parity-Flag beschreibt die Anzahl gesetzter Bits im letzten Rechenergebnis: Bei einer geraden Anzahl ist es gesetzt, bei einer ungeraden gelöscht. Bei x86-Prozessoren wird es nur aus dem niederwertigsten Byte gebildet.

Interrupts und Dezimalrechnung

Das Interrupt-Enable-Flag ist ein Steuerungs- und kein Status-Flag. Wenn es gelöscht wird, setzt der Prozessor maskierbare beziehungsweise sperrbare Interrupts aus. Zu Beginn einer Interrupt-Routine wird es gelöscht, teils automatisch, damit die Routine ohne Unterbrechung bis zum Ende ablaufen kann. Nach dem Setzen führt der Prozessor noch eine Anweisung aus, bevor er wieder Interrupts zulässt. Dadurch kann in einer Interrupt-Routine nach dem Setzen noch der Return-Befehl ausgeführt werden.

Nicht-maskierbare Interrupts (NMI) bleiben vom Zustand dieses Flags unberührt. Manche CPUs besitzen mehrere solcher Bits, um Interrupts unterschiedlicher Prioritäten gezielt zu sperren oder zu erlauben.

Das Adjust-Flag wird häufig verwendet, wenn ein Mikroprozessor keine speziellen Rechenbefehle für dualkodierte Dezimalziffern (BCD) besitzt. Es wird bei binären Rechenoperationen gesetzt, wenn ein Übertrag zwischen Halbbytes entsteht. Beim Beispiel 9 + 7 = 16 gilt: 1001_{2} + 0111_{2} = 1 0000_{2}. Das Flag zeigt, dass eine Korrektur nötig ist: 1001_{2} + 0111_{2} = 0001_{2}(10^{1}) + 0110_{2}(10^{0}).

Das BCD-Flag ist ebenfalls ein Steuerungs-Flag. Ist es gesetzt, arbeitet die ALU im BCD-Modus statt mit rein binärer Arithmetik. So sollen insbesondere Finanzrechnungen unmittelbar im Dezimalsystem erfolgen und Ungenauigkeiten bei der Umrechnung binärer Fest- oder Gleitkommazahlen vermieden werden.

Architekturen ohne übliche Flags

Einige RISC-Architekturen besitzen kein übliches Statusregister mit arithmetischen Flags. Dazu zählen MIPS, der MIPS nachempfundene Altera Nios, DEC Alpha und AMD 29000.

Bei bestimmten Befehlen werden Informationen wie ein Übertrag („carry“) stattdessen als Bits in einem Universalregister, etwa r8, gespeichert. In anderen Fällen, beispielsweise beim Erkennen eines arithmetischen Überlaufs, werden längere Ersatzkonstrukte aus mehreren CPU-Befehlen verwendet.

Weiterlesen

Prozessor Aufbau und Funktionale Einheiten · Hauptprozessor (CPU) und Mehrprozessorkerne · Steuer- bzw. Leitwerk · Rechenwerk und Register · Datenleitungen · Caches und MMU. Flag (Informatik) Aus der englischen Sprache findet sich in der Programmierung für synchronisierende Statusvariablen auch der Begriff (binäre) Semaphore bzw. Mutex locks. Arithmetisch-logische Einheit Eine arithmetisch-logische Einheit (englisch arithmetic logic unit, daher oft abgekürzt ALU) ist ein elektronisches Rechenwerk, welches in Prozessoren zum … Positive und negative Zahlen Der Betrag einer Zahl ist gleich dem Abstand der Zahl zur Zahl 0. Der Betrag ... positive Zahl auf spektrum.de (Lexikon der Mathematik). Einzelnachweise. Anweisung (Programmierung) Anweisungen sind üblicherweise Zuweisungen, Kontrollanweisungen (wie Sprünge, Schleifen und bedingte Anweisungen) und Prozeduraufrufe. Abhängig von der … Stapelspeicher Abstrakter Datentyp. Bearbeiten. Bei der Implementierung eines Stapelspeichers als abstrakter Datentyp in einer einfach verketteten Liste wird der Zeiger auf … Interrupt Interrupts (genauer: Hardware-Interrupts) werden durch asynchrone externe Ereignisse ausgelöst. Asynchron bedeutet in diesem Zusammenhang, dass die laufende … Übertragsbit Das Übertragsbit (engl. carry bit) ist ein Begriff aus der Informatik. Er bezeichnet ein Bit, welches den Übertrag einer Addition oder Subtraktion von Bits … Zweierkomplement Das Zweierkomplement kann als eine Interpretationsweise formatierter binärer Bitfolgen gesehen werden, welche für negative Werte von Integer-Variablen auftritt, … Dualsystem Das Dualsystem (lat. dualis „zwei enthaltend“), auch Zweiersystem oder Binärsystem genannt, ist ein Zahlensystem, das zur Darstellung von Zahlen nur zwei … Mikroprozessor Ein Mikroprozessor (µP oder uP) ist ein als integrierter Schaltkreis (IC) ausgeführter Computerprozessor. Typische Beispiele von Mikroprozessoren sind die … Addition Die Addition basiert auf dem Vorgang des Zählens. Deshalb verwendet man für den Vorgang, eine Addition auszuführen, neben Addieren auch den Ausdruck …