装配 - 将xmm寄存器加载到32寄存器

时间:2015-08-29 18:40:23

标签: assembly masm sse

我的结果是xmm0。它是一个32位浮点数。我正在尝试将其加载到32位寄存器edx

movss dword ptr [result], xmm0
mov eax, dword ptr [result]

我在eax中有一些奇怪的数字......我认为这是一个地址但不是因为我试图看到该地址背后的内容。

我的第二个想法是:

movd eax, xmm0

但它给了我与第一个相同的结果。 有谁知道如何正确地将浮点数从xmm寄存器加载到32位寄存器?

1 个答案:

答案 0 :(得分:2)

如果希望将从单精度浮点转换的结果转换为整数,请使用

cvtss2si r32, xmm

还有其他转换说明,例如:将4个打包浮点数转换为4个打包的32位整数:

cvtps2dq xmm, xmm

英特尔内在函数指南可以方便地按功能搜索,当然英特尔insn参考指南包含所有内容的完整详细信息,索引包含摘要。在https://stackoverflow.com/tags/x86/info处链接到这些以及其他重要的阅读内容,如Agner Fog的指南。