簡介
MMX的益處在於,當時存在的作業系統不必為此而做出任何修改便可以輕鬆地執行MMX程式。但是,問題也比較明顯,那就是MMX指令集與x86浮點運算指令不能夠同時執行,必須做密集式的交錯切換才可以正常執行,這種情況就勢必造成整個系統運行質量的下降。
指令介紹
1.數據轉移指令(Data Movement):
(1)movd;
(2)movq;一次性將32位或64位的數據在暫存器與記憶體之間轉移。操作DWORD時,MMX暫存器只使用低32位。
2.算術指令:
(1)padd[b,w,d],無符號數加;
(2)padds[b,w],飽和模式的有符號數加;
(3)paddus[b,w],飽和模式的無符號數加;
(4)psub[b,w,d],無符號數減;
(5)psubs[b,w],飽和模式的有符號數減;
(6)psubus[b,w,d],飽和模式的無符號數減;
(7)pmulhw,WORD類型的有符號數相乘後取高16位;
(8)pmullw,WORD類型的有符號數相乘後取低16位;
(9)pmaddwd,WORD類型的向量點乘運算。
3.移位指令:
(1)psll[w,d,q],邏輯左移;
(2)psrl[w,d,q],邏輯右移;
(3)psra[w,d,q],算術右移。
4.邏輯指令:
(1)pand位與操作;
(2)pandn將目的運算元取反後再和源運算元做位與操作;
(3)por位或操作;
(4)pxor按位異或操作。
5.比較指令:
6.數據打包/拆包指令:
7.MMX狀態清除指令:
(MMX指令集的詳解可以閱讀參考資料: )
CPU支持
如果CPU能夠具有了MMX指令集,就可以使用Visual Studio .NET 2003提供的對MMX指令集支持的C++函式館了,可以查看MSDN中的一個Visual C++ CPUID的例子,它可以幫你檢測你的CPU是否支持SSE、MMX指令集或其它的CPU功能。