フローティングポイント操作にどのような指示を使用する必要がありますか?

StackOverflow https://stackoverflow.com/questions/3692020

質問

私はやや精通しています X87の指示 x86アセンブリで浮動小数点数を操作するため。しかし、私はどこかで、これらがもう使用されていないことを読みました。 (そして、64ビットのWindowsドライバーでは許可されていませんでした)[1]

その場合、どのような指示を使用する必要がありますか?私はSSEについて何かを見ましたが、私が間違っていない限り、それらの指示はより最近追加され、古いチップでは利用できません。 (ペンティウムIIなどのように)

どのような指示 したほうがいい 私は使用していますか?

役に立ちましたか?

解決

後方の互換性を忘れてしまう場合は、SSEが進む方法です。より豊富な命令セットとベクトルサポートがあります。実行されているプロセッサのために最適化されたい場合は、より高いレベルの言語で書き込み、現在実行中のプロセッサをチェックし、そのために最適化されたコードを実行するICCをコンパイルしてみてください。

一日の終わりには、ソフトウェアの予想されるユーザーに依存します。

他のヒント

後方互換性が必要な場合は、x87命令を使用する必要があります。それ以外の場合、ネイサン・フェルマンが言うように、SSE#の指示は行く方法かもしれません。なぜなら、彼らのコードは書くのがやや簡単であるためです(X87はスタックを使用しますが、通常のレジスタモデルを使用します)。

そうは言っても、x87コードを使用したい(またはx87/SSEコードの混合)になる理由がいくつかあります。

(1)X87は、より高い精度、つまり80ビットの浮動小数点計算を提供します。 (どちらも、X87/SSEは32ビットと64ビットのフロートを提供します。)これは、たとえば、特別な精度が必要になる可能性のあるいくつかの科学コードの問題である可能性があります。

(2)X87は、SSE#命令セットの対象ではないいくつかの操作、つまりトライオオノトリック操作(SIN、COS、...)および対数の命令を提供します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top