vge*_*gel 1 floating-point x86 assembly fpu x87
我有一对存储在eax和ecx中的32位浮点数.我可以直接将它们加载到FPU中对它们进行操作,而无需先存储到内存中吗?这将显着简化一些编译器代码,但fld似乎只能在内存上运行.
不,你做不到.就生成代码而言,您可以fld r32通过以下序列轻松模拟(例如,针对大小进行优化;)):
push r32
fld [esp]
pop r32
Run Code Online (Sandbox Code Playgroud)
考虑使用SSE(如果可用),它使用该movd指令提供直接的GPR到XMM移动.添加两个寄存器可能看起来像:
movd xmm0, eax
movd xmm1, ecx
addss xmm0, xmm1
Run Code Online (Sandbox Code Playgroud)
如果您需要GPR中的结果,可以使用另一个将其移回movd.