如何将浮点常量值移动到 xmm 寄存器中?

Jaz*_*zEX 5 x86 assembly sse

是将值移动到 xmm 寄存器的唯一方法,首先将值移动到整数寄存器中,不知道它们叫什么,然后进入 xmm 寄存器,例如

mov   [eax], (float)1000   ; store to memory
movss xmm1,[eax]           ; reload
Run Code Online (Sandbox Code Playgroud)

或者

mov        eax,  1000       ; move-immediate integer
cvtsi2ss   xmm1,eax         ; and convert
Run Code Online (Sandbox Code Playgroud)

还是有另一种方法?有没有直接移动的值划分为XMM寄存器,沿东西线的方式:movss xmm1,(float)1000

fuz*_*fuz 6

没有使用立即数加载 SSE 寄存器的指令。常见的习惯用法是从全局常量加载您需要的值:

const   dd 1000.0

...

        movss xmm0,[const]
Run Code Online (Sandbox Code Playgroud)

  • 您当然可以使用 `mov eax, imm32` / `movd xmm0, eax` 使用 2 条指令来完成,但是是的,静态常量通常是最好的。相关:[动态生成向量常数的最佳指令序列是什么?](/sf/ask/2455954161/ - 即时)。 (2认同)