System.Set8087CW
Delphi
procedure Set8087CW(NewCW: Word);
C++
extern DELPHI_PACKAGE void __fastcall Set8087CW(Word NewCW);
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
procedure function |
public | System.pas System.hpp |
System | System |
Description
Définit le mot de contrôle de la FPU.
Sur Windows 32 bits : Ce mot contrôle la précision des calculs en virgule flottante, le mode d'arrondi et si certaines opérations en virgule flottante déclenchent des exceptions. Pour obtenir des détails, voir la documentation du processeur Intel.
Cette routine vous permet d'avoir un accès direct au mot de contrôle. Sachez que l'utilisation de cette routine pour changer la valeur du mot de contrôle 8087CW change le comportement des calculs en virgule flottante du programme. Afin d'éviter cela, réinitialisez le mot de contrôle 8087CW. Pour consulter un exemple, voir les exemples de code Set8087CW listés ci-dessous.
Remarque : Pour changer le mode d'exception, le mode d'arrondi et la précision des nombres en virgule flottante, nous vous recommandons d'utiliser System.Math.SetExceptionMask, System.Math.SetRoundMode et System.Math.SetPrecisionMode au lieu de Set8087CW ou System.SetMXCSR.
Lors de l'utilisation de OpenGL pour effectuer le rendu des graphiques 3D, nous vous recommandons de désactiver toutes les exceptions de virgule flottante pour des raisons de performances. Pour ce faire, appelez Set8087CW(0x133f)
dans l'événement OnCreate de votre fiche principale avant d'appeler une fonction OpenGL.
Sur Windows 64 bits : Ce mot de contrôle ne contrôle pas les opérations en virgule flottante, car le registre SSE est utilisé pour la virgule flottante en mode 64 bits, au lieu de la FPU (unité de virgule flottante). Toutefois, la FPU est toujours présente en mode 64 bits, ainsi SGet8087CW définit la valeur du mot de contrôle, comme dans le mode 32 bits.
Sur le simulateur iOS : Cette fonction ne change pas l'exception pour les bits de masque du mot de contrôle X87. Les bits masqués pour cette exception ont toujours la valeur 1.
Voir aussi
- System.Reset8087CW
- System.Get8087CW
- System.Math.SetExceptionMask
- System.Math.SetRoundMode
- System.Math.SetPrecisionMode
- System.SetMXCSR
- Routines de contrôle des nombres à virgule flottante
Exemples de code