2017-12-22 15 views
-1

まず、値を整数レジスタに移動し、呼び出されたものを知らずにxmmレジスタに値を移動し、xmmレジスタに値を移動する唯一の方法です。浮動小数点定数の値をxmmレジスタに移動する方法は?

mov [eax], (float)1000 ; store to memory 
movss xmm1,[eax]   ; reload 

または

mov  eax, 1000  ; move-immediate integer 
cvtsi2ss xmm1,eax   ; and convert 

または別の方法はありますか?値をxmmレジスタに直接移動する方法はありますか?movss xmm1,(float)1000

+1

メモリからロードすることもできます。即時のバージョンはありません。 – Jester

答えて

4

即時性のあるSSEレジスタをロードする手順はありません。一般的なイディオムは、必要な値をグローバル定数からロードすることです。

const dd 1000.0 

... 

     movss xmm0,[const] 
+0

もちろん、 'mov eax、imm32' /' movd xmm0、eax'を使って2つの命令で行うこともできますが、静的定数はしばしば最適です。関連:[即時にベクトル定数を生成するための最良の命令シーケンスは何ですか?](https://stackoverflow.com/questions/35085059/what-are-the-best-instruction-sequences-to-generate-vector-constants -急いで)。 –

関連する問題