MMX指令集

MMX指令集

目录导航

简介

MMX的益处在于,当时存在的操作系统不必为此而做出任何修改便可以轻松地执行MMX程序。但是,问题也比较明显,那就是MMX指令集与x87浮点运算指令不能够同时执行,必须做密集式的交错切换才可以正常执行,这种情况就势必造成整个系统运行质量的下降。[1]

指令介绍

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功能。 [2] 

相关百科
返回顶部
产品求购 求购