Question

Je suis un peu familier avec le x87 instructions pour manipuler des nombres à virgule flottante dans l'assemblage x86 . Cependant, je l'ai lu quelque part que ceux-ci étaient rarement utilisés plus. (Et ne sont pas autorisés dans les pilotes Windows 64 bits) [ 1 ]

Si tel est le cas, quelles instructions dois-je utiliser? J'ai vu quelque chose sur l'ESS, mais à moins que je ne me trompe pas, ces instructions ont été ajoutés beaucoup plus récemment et ne sera pas disponible sur des puces plus âgés. (Comme le Pentium II, etc.)

Quelles instructions devrait j'utiliser?

Était-ce utile?

La solution

Si vous êtes prêt à oublier la compatibilité ascendante, SSE est le chemin à parcourir. Il dispose d'un ensemble d'instructions plus riche et le support vectoriel. Si vous voulez être optimisé pour tout processeur est en cours d'exécution, vous devriez essayer d'écrire dans une langue de niveau supérieur et la compilation avec ICC, qui vérifie le processeur est en cours d'exécution et exécute le code qui est optimisé pour cela.

A la fin de la journée, il dépend des utilisateurs attendus de votre logiciel.

Autres conseils

Si vous devez être rétrocompatible, vous devrez utiliser des instructions x87. Dans le cas contraire, comme Nathan Fellman dit, les instructions SSE n peuvent être la voie à suivre, aussi parce que le code pour eux est un peu plus facile d'écrire (ils utilisent un modèle de registre normale, alors que x87 utilise une pile).

Cela dit, il y a plusieurs raisons pour lesquelles vous pouvez utiliser le code x87 (ou le mélange x87 / code SSE):

(1) x87 offre une précision plus élevée, à savoir 80 bits de calcul en virgule flottante. (Les deux, x87 / offre SSE 32 bits et 64 bits flotteurs). Ceci est potentiellement un problème avec par exemple un code scientifique qui peut avoir besoin de la précision supplémentaire.

(2) offre x87 certaines opérations qui ne sont pas couverts par les jeux d'instructions SSE #, à savoir les instructions pour les opérations triogonometric (sin, cos, ...) et logarithmes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top