2

我正在使用 Digital-Mars C++ 和 VC++ 10 编译器,并且我有 masm32 汇编器。如何使用 mm0....mm7 64 位寄存器在 eax、eabx 32 位寄存器之间切换数据?我可以在 c++ 编译器 asm{} 或 _asm{} 中使用它们吗?

像这样的东西可能很有用:

mmTo32 eax,mm3
mmTo16 bx,mm6
mmTo8 cl,mm4
ToMM mm2,eax

我用谷歌搜索但找不到足够的。

谢谢你。

4

1 回答 1

5

使用 SSE2,因为 XMM 更好且受支持(感谢 Harold 的评论,XMM 与 MM 寄存器无关,一定是我与 AVX/SSE 混淆了)。

请参阅 MSDN 的此页面:http: //msdn.microsoft.com/en-us/library/dzs626wx (v=vs.71).aspx

您需要的所有内在函数都在这里。它们由编译器展开为内联汇编。

您需要_mm_loadl_pi/_mm_loadh_pi_mm_storel_pi/_mm_storeh_pi将值加载/存储到内存中。

只需包含“xmmintrin.h”文件并在您的项目选项中启用 SSE 代码生成。

于 2012-07-19T16:51:04.253 回答