2
如何将1
或2
添加到寄存器xmm0
(double)?在x86中向xmm寄存器添加恒定值
我能做到这样,但肯定必须有一个更简单的方法:
movsd xmm0, [ecx] xor eax, eax inc eax cvtsi2sd xmm1, eax addsd xmm0, xmm1 movsd [ecx], xmm0
也才有可能与浮点指令的x87做到这一点?
这并没有为我工作:
fld dword ptr [ecx] fld1 faddp fstp dword ptr [ecx]
'movsd xmm0,[esp]'或'movsd xmm0,[rsp]'? –
好点,可能意味着rsp,因为我们正在谈论x64。 –
无论如何,使用堆栈的建议是非常糟糕的,并且不会避免令人惊讶地使用'double'常量作为'mov r64,imm64'的操作数。如果你想避免这种情况,建议'mov eax,1' /'cvtsi2sd xmm0,eax' –