Pentium-sichere FDIV-Operationen (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

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.