Opérations FDIV du Pentium sécurisées (Object Pascal)

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Liste des directives de compilation Object Pascal - Index


Type

Commutateur

Syntaxe

{$U+} ou {$U-} {$SAFEDIVIDE ON} ou {$SAFEDIVIDE OFF}

Par défaut

{$U-}

Portée

Locale



La directive $U spécifie si le compilateur génère le code qui détecte l'instruction FDIV défectueuse des anciens processeurs Pentium. Windows 95, Windows NT 3.51 et les versions ultérieures contiennent le code qui corrige ce bogue au niveau du système.

En mode {$U+}, toutes les divisions à virgule flottante sont effectuées en utilisant les routines de la bibliothèque d'exécution. Lors du premier appel de la routine effectuant ce type de division, un test est fait pour voir si l'instruction FDIV du processeur fonctionne correctement et la variable TestFDIV (déclarée dans l'unité System) est mise à jour en fonction du résultat de ce test. Pour les opérations de division à virgule flottante suivantes, la valeur de TestFDIV est utilisée pour déterminer l'action à entreprendre.

Valeur Signification

-1 L'instruction FDIV a été testée et ne fonctionne pas correctement.

0 L'instruction FDIV n'a pas encore été testée.

1 L'instruction FDIV a été testée et fonctionne correctement.

Avec un processeur qui ne présente aucune erreur de fonctionnement, la directive {$U+} n'induit qu'une très légère baisse de performance. Si le processeur ne fonctionne pas correctement, une division à virgule flottante peut prendre trois fois plus de temps à s'exécuter en mode {$U+}, mais produira toujours un résultat exact.

En mode {$U-}, les divisions à virgule flottante sont effectuées en utilisant les instructions FDIV intégrées. Le code résultant est plus compact et s'exécute plus rapidement mais peut produire des résultats erronés sur les processeurs Pentium défectueux. Vous ne devez utiliser le mode {$U-} que si vous êtes certain que votre code s'exécutera sur un processeur Pentium non défectueux.