sseでmovapsを使うため、128bitのデータのメモリアドレスを指定したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
s_kruy

sseでmovapsを使うため、128bitのデータのメモリアドレスを指定したい

#1

投稿記事 by s_kruy » 12年前

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バイトの倍数にしたいのですが、どのようにすればいいでしょうか。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: sseでmovapsを使うため、128bitのデータのメモリアドレスを指定したい

#2

投稿記事 by h2so5 » 12年前

VC++の場合は、__declspec(align(16)) で開始アドレスを制御できるようです。
http://msdn.microsoft.com/ja-JP/library/83ythb65.aspx

s_kruy

Re: sseでmovapsを使うため、128bitのデータのメモリアドレスを指定したい

#3

投稿記事 by s_kruy » 12年前

ありがとうございます。
movapsで値を格納できました。

閉鎖

“C言語何でも質問掲示板” へ戻る