Pentium-sichere FDIV-Operationen (Delphi)
Nach oben zu Liste der Delphi-Compiler-Direktiven - Index
Typ |
Option |
Syntax |
{$U+} oder {$U-} {$SAFEDIVIDE ON} oder {$SAFEDIVIDE OFF} |
Vorgabe |
{$U-} |
Bereich |
Lokal |
Die Direktive $U steuert die Erzeugung von Fließkommacode, der vor der fehlerhaften FDIV-Anweisung schützt, die in bestimmten (frühen) Pentium-Prozessoren enthalten ist. Windows 95, Windows NT 3.51 und spätere Versionen enthalten Code, der den Pentium-FDIV-Fehler korrigiert und das System schützt.
Im Status {$U+}werden alle Fließkommadivisionen von einer Laufzeit-Bibliotheksroutine ausgeführt. Beim ersten Aufruf einer Fließkommadivision prüft die Routine, ob die FDIV-Anweisung des Prozessors korrekt arbeitet, und aktualisiert die in der Unit System deklarierte Variable TestFDIV entsprechend. Deren Wert bestimmt bei den folgenden Fließkommadivision, wie vorzugehen ist.
Wert Bedeutung
-1 Die FDIV-Anweisung wurde getestet und als fehlerhaft erkannt.
0 Die FDIV-Anweisung wurde noch nicht geprüft.
1 Die FDIV-Anweisung wurde getestet und als korrekt erkannt.
Mit Pentium-Prozessoren, die keine fehlerhafte FDIV-Anweisung enthalten, bewirkt {$U+}nur eine geringfügigen Leistungsminderung. Mit fehlerhaften Pentium-Prozessoren können Fließkommadivisionen im Status {$U+} bis zu dreimal länger dauern, liefern aber stets korrekte Ergebnisse.
Im Status {$U+}werden Fließkommadivisionen durch In-Line-FDIV-Anweisungen ausgeführt. Sie garantieren optimale Ausführungsgeschwindigkeiten und Codegrößen, können auf fehlerhaften Pentium-Prozessoren jedoch falsche Ergebnisse liefern. Sie sollten daher den Status {$U+}nur verwenden, wenn Sie sicher sind, dass der Code auf einem fehlerfreien Pentium-Prozessor läuft.