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

hus*_*sik 2 c++ x86 assembly inline-assembly

我正在使用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
Run Code Online (Sandbox Code Playgroud)

我用Google搜索但找不到足够的信息.

谢谢.

Vik*_*pov 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代码生成.

  • MM寄存器别名为浮点堆栈,而不是XMM寄存器的下半部分. (2认同)