2017-12-22 31 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 -즉석에서). –