sseでmovapsを使うため、128bitのデータのメモリアドレスを指定したい
Posted: 2013年8月08日(木) 13:52
Visual C++ 2010 Express のインラインアセンブラを使っています。
下のようなコードで、レジスタxmm0に配列fの内容を格納しようと思います。
float f[4] = {0.0f, 1.0f, 2.0f, 3.0f};
_asm
{
lea eax, f
movaps xmm0, [eax]
}
ですが、movapsを使うためには、メモリ上のデータfの開始アドレスが16バイトの倍数になっている必要があります。
なので、fが配置されるアドレスを16バイトの倍数にしたいのですが、どのようにすればいいでしょうか。
下のようなコードで、レジスタxmm0に配列fの内容を格納しようと思います。
float f[4] = {0.0f, 1.0f, 2.0f, 3.0f};
_asm
{
lea eax, f
movaps xmm0, [eax]
}
ですが、movapsを使うためには、メモリ上のデータfの開始アドレスが16バイトの倍数になっている必要があります。
なので、fが配置されるアドレスを16バイトの倍数にしたいのですが、どのようにすればいいでしょうか。