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バイトの倍数にしたいのですが、どのようにすればいいでしょうか。
sseでmovapsを使うため、128bitのデータのメモリアドレスを指定したい
Re: sseでmovapsを使うため、128bitのデータのメモリアドレスを指定したい
VC++の場合は、__declspec(align(16)) で開始アドレスを制御できるようです。
http://msdn.microsoft.com/ja-JP/library/83ythb65.aspx
http://msdn.microsoft.com/ja-JP/library/83ythb65.aspx