2010-11-01 11 views
0

Après mon previous question (je suppose que le compilateur 64 bits utilise les instructions SSE seulement pour les calculs en virgule flottante):fonctions mathématiques transcendantale dans le compilateur Delphi 64 bits

  • Comment fonctions transcendantale mathématiques (sin, atan, exp , log, etc.) sont mis en œuvre dans le compilateur Delphi 64 bits? AFAIK il n'y a pas d'implémentations matérielles SSE . Qu'est-ce que logithèque est utilisé, quid du performances et la précision par rapport à la mise en œuvre du matériel FPU actuel ?

See also

+5

attendez jusqu'à ce que le compilateur 64 bits arrive – VibeeshanRC

+2

Je suis désolé, ma boule de cristal est cassée ... –

+0

Ces fonctions seront-elles évaluées en utilisant un logiciel? Cela me semble absurde ... Ça * ne peut pas * être ** ça ** mauvais, maintenant, n'est-ce pas? –

Répondre

2

De toute évidence, personne, sauf pour Embarcadero peut répondre à cette certitude avant que le produit soit libéré. Il est très probable que tout compilateur x64 décent utilisera l'ensemble d'instructions SSE2 comme référence et tentera donc de faire autant de calculs à virgule flottante en utilisant les fonctionnalités SSE que possible, en minimisant l'utilisation de l'unité FPU x87. Cependant, il faut aussi dire qu'il n'y a pas de raison technique qui empêcherait l'utilisation de la FPU x87 dans le code d'application x64 (malgré les rumeurs du contraire qui existent depuis un certain temps, si vous voulez plus d'informations sur ce point, s'il vous plaît jetez un oeil à Agner Fog's Calling Convention Manual, en particulier au chapitre 6.1 "Les registres flottants peuvent-ils être utilisés dans Windows 64 bits?").

+0

Allen Bauer (Embarcadero) a twitté que Extended = Double sur x64 (même que dans .NET) http://www.delphifeeds.com/go/s/73529 en raison des conventions d'appel x64 et des problèmes d'alignement 64 bits. –

+1

@Jeroen - mais rien dans l'ABI/convention d'appel ne vous empêche de transmettre des valeurs de 80 bits; Si un paramètre ne correspond pas aux registres (64 bits maximum), la recommandation est de le passer par référence. Ré. alignement - AFAIK la plupart des compilateurs qui supportent les flottants de 80 bits sur x64 les alignent aux limites de 16 octets. Delphi pourrait faire de même. Par conséquent, ce ne sont pas vraiment des problèmes qui empêchent techniquement Embarcadero d'implémenter des maths FP 80bit. – PhiS

+0

Si je me souviens bien, il y a un partage de la pile FPU ou des registres, et des autres registres. Je sais à coup sûr que c'était le cas dans le monde MMX. Si cela est encore le cas dans le monde x64, cela rendra cela très difficile. Ceci mis à part la prise en charge potentielle d'autres architectures de processeurs qui ne prennent même pas en charge ce type de données 80 bits. En l'omettant dans la première implémentation 64 bits, ils définissent une ligne de base mais laissent l'option ouverte pour l'introduction du support de virgule flottante 80 bits dans le futur. –