我如何使用我的CPU的MM0到MM7寄存器?

时间:2012-07-19 16:32:46

标签: c++ assembly inline-assembly x86

我正在使用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

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

谢谢。

1 个答案:

答案 0 :(得分: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代码生成。