next up previous
Nächste Seite: Prozessor Trap #xxx Aufwärts: Fehlermeldungen des Laufzeitsystems Vorherige Seite: Bereichsfehler

Überlauf

Ist das Resultat einer Rechenoperation grösser als es der Maximalwert der beteiligten Typen erlaubt, so tritt Überlauf ein. Die entsprechende Unterschreitung des Minimalwerts wird Unterlauf genannt. Auf Prozessorebene wird Überlauf und Unterlauf hingegen nicht unterschieden, weshalb hier Überlauf auch Unterlauf beinhalten soll.


\begin{example}
Beispiel:
\begin{alltt}
\relax{} VAR
\\ i,j,k:INTEGER;
\\ {\rm {...
...)>0 THEN {\rm {} \ldots} END; (* Unterlauf *)
\\ \relax \end{alltt}\end{example}

Üblicherweise wird mit der TRAPV-Anweisung auf Überlauf geprüft. Dies ist aber bei einer 16 Bit Multiplikation nicht möglich. Die Überlaufsprüfung erfolgt hier durch eine explizite Prüfung. Im Fehlerfall erfolgt ein Aufruf der Instruktion TRAP #15. Im Requester wird angegeben, ob TRAPV oder TRAP #15 ausgeführt wurde.

Auf den Prozessoren ab MC68020 steht eine Instruktion TRAPcc5.13 zur Verfügung, welche für eine Bedingung direkt eine TRAP-Instruktion ausführt. Dadurch werden keine Instruktionen TRAP #13, TRAP #14 und TRAP #15 benutzt. Logischerweise erscheinen die beschriebenen Requester dann auch nicht. Stattdessen erscheint die Fehlermeldung des Überlaufs, da TRAPcc nur die allgemeinere Form der TRAPV-Instruktion ist. Dies bedeutet aber, dass ab MC68020 dieser Fehler für Zugriff auf NIL-Zeiger, Bereichsfehler, Überlauf und Unterlauf auftritt. Diesem Nachteil des Informationsverlustes steht der Vorteil des kürzeren und schnelleren Codes gegenüber.



Claudio Nieder 2000-11-12