我的结果是xmm0。它是一个32位浮点数。我正在尝试将其加载到32位寄存器edx
movss dword ptr [result], xmm0
mov eax, dword ptr [result]
我在eax中有一些奇怪的数字......我认为这是一个地址但不是因为我试图看到该地址背后的内容。
我的第二个想法是:
movd eax, xmm0
但它给了我与第一个相同的结果。 有谁知道如何正确地将浮点数从xmm寄存器加载到32位寄存器?
答案 0 :(得分:2)
如果希望将从单精度浮点转换的结果转换为整数,请使用
cvtss2si r32, xmm
还有其他转换说明,例如:将4个打包浮点数转换为4个打包的32位整数:
cvtps2dq xmm, xmm
英特尔内在函数指南可以方便地按功能搜索,当然英特尔insn参考指南包含所有内容的完整详细信息,索引包含摘要。在https://stackoverflow.com/tags/x86/info处链接到这些以及其他重要的阅读内容,如Agner Fog的指南。