Überlaufflagge - Overflow flag

In Computerprozessoren ist das Überlaufflag (manchmal auch als V-Flag bezeichnet ) normalerweise ein einzelnes Bit in einem Systemstatusregister , das verwendet wird, um anzuzeigen, wann in einer Operation ein arithmetischer Überlauf aufgetreten ist, was darauf hinweist, dass das vorzeichenbehaftete Zweierkomplement- Ergebnis nicht in das passt Anzahl der für das Ergebnis verwendeten Bits. Einige Architekturen sind möglicherweise so konfiguriert, dass bei einem Vorgang, der zu einem Überlauf führt, automatisch eine Ausnahme generiert wird.

Nehmen wir als Beispiel an, wir addieren 127 und 127 unter Verwendung von 8-Bit-Registern. 127 + 127 ist 254, aber unter Verwendung von 8-Bit-Arithmetik wäre das Ergebnis 1111 1110 binär, was die Zweierkomplementcodierung von –2 ist, einer negativen Zahl. Eine negative Summe positiver Operanden (oder umgekehrt) ist ein Überlauf. Das Überlaufflag würde dann gesetzt, damit das Programm das Problem erkennen und dieses abmildern oder einen Fehler signalisieren kann. Das Überlaufflag wird somit gesetzt, wenn das höchstwertige Bit (hier als Vorzeichenbit betrachtet) geändert wird, indem zwei Zahlen mit demselben Vorzeichen addiert werden (oder zwei Zahlen mit entgegengesetzten Vorzeichen subtrahiert werden). Ein Überlauf kann nicht auftreten, wenn das Vorzeichen von zwei Additionsoperanden unterschiedlich ist (oder das Vorzeichen von zwei Subtraktionsoperanden gleich ist).

Wenn Binärwerte als vorzeichenlose Zahlen interpretiert werden , ist das Überlaufflag bedeutungslos und wird normalerweise ignoriert. Einer der Vorteile der Zweierkomplementarithmetik besteht darin, dass die Additions- und Subtraktionsoperationen nicht zwischen vorzeichenbehafteten und vorzeichenlosen Operanden unterscheiden müssen. Aus diesem Grund unterscheiden die meisten Computerbefehlssätze nicht zwischen vorzeichenbehafteten und vorzeichenlosen Operanden. Bei jeder Operation werden sowohl (vorzeichenbehaftete) Überlauf- als auch (vorzeichenlose) Übertragsflags generiert, und es bleibt den Anweisungen überlassen, auf die jeweils interessierenden zu achten.

Intern wird das Überlaufflag normalerweise durch einen exklusiven oder internen Übertrag in das Vorzeichenbit und aus diesem heraus erzeugt .

Bitweise Operationen (und oder oder x oder nicht drehen) haben keine Vorstellung von einem vorzeichenbehafteten Überlauf, sodass der definierte Wert auf verschiedenen Prozessorarchitekturen variiert. Einige löschen das Bit bedingungslos, andere lassen es unverändert und setzen es dennoch auf einen undefinierten Wert. Verschiebungen und Multiplikationen erlauben zwar einen genau definierten Wert, werden jedoch nicht konsequent implementiert. Beispielsweise definiert der x86- Befehlssatz nur das Überlaufflag für Multiplikationen und 1-Bit-Verschiebungen. Mehrbitverschiebungen lassen es undefiniert.

Verweise