2

私は、x86アセンブリで浮動小数点数を操作するためのx87命令にある程度精通しています。しかし、私はどこかでこれらがもうめったに使われなくなったことを読みました。(64ビットWindowsドライバーでは許可されていませんでした)[ 1 ]

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

どのような指示を使用する必要がありますか?

4

2 に答える 2

2

下位互換性を忘れても構わないと思っているなら、SSEが最適です。より豊富な命令セットとベクトルサポートがあります。実行中のプロセッサに合わせて最適化する場合は、高級言語で記述し、ICCでコンパイルしてみてください。ICCは、プロセッサが現在実行されていることを確認し、そのために最適化されたコードを実行します。

結局のところ、それはあなたのソフトウェアの予想されるユーザーに依存します。

于 2010-09-11T18:58:03.347 に答える
0

下位互換性が必要な場合は、x87命令を使用する必要があります。そうでなければ、Nathan Fellmanが言うように、SSE#命令が進むべき道かもしれません。これは、それらのコードがいくらか記述しやすいためです(x87はスタックを使用するのに対し、通常のレジスタモデルを使用します)。

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

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

(2)x87は、SSE#命令セットでカバーされていないいくつかの演算、つまりトリオゴノメトリック演算(sin、cos、...)および対数の命令を提供します。

于 2010-09-13T14:41:35.420 に答える