x64アセンブリで学校にプロジェクトを書いています。私はnasmコンパイラを使用しています。xmm レジスターは 4 x 32 ビットまたは 2x64 ビットを格納できることを知っています。たとえば、4 つの float 値 (32 ビット) を xmm1 に入れる方法を知りたがっていました。私の関数にはヘッダーがcurve(float * x, float * y, int a, int b)
あり、x は 5 要素配列へのポインターです。情報を探していましたが、適切に行う方法がまだわかりません。事前に助けてくれてありがとう!(ps. sse に関する情報を含むチュートリアルがあれば、非常に役立ちます)
質問する
1278 次
1 に答える
2
movdqa、movdqu、movaps、movups、movapd、movupd 命令のいずれかを使用して、メモリから 128 ビット SSE レジスタ (xmm) に値をロードできます。movdqa、movaps、movapd は、16 バイトにアラインされたメモリ アクセスを必要とします (しかも高速です)。
ちなみに、SIMD で一度に 1 つのポイントを実行するには、多くのコード変更が必要になります。一度に 4 つ実行することをお勧めします (SIMD には 4 レーンの単精度浮動小数点があるため)。次に、(多かれ少なかれ)各通常の命令を同じベクトル命令に置き換えることができます。
于 2013-01-02T17:14:55.037 に答える