我正在使用 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
我用谷歌搜索但找不到足够的。
谢谢你。
我正在使用 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
我用谷歌搜索但找不到足够的。
谢谢你。
使用 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 代码生成。