最近学习SSE指令集,SSE全称是stream SIMD Extentions(流SIMD扩展) ,SSE指令采用128位存储单元,可以放置4个浮点数,也就是说一条命令可以执行4次浮点数运算。SSE是为了更快地处理浮点数而开发的扩展指令集,因此该指令通常被用于几何运算方面,例如3D绘图应用软件、电脑游戏。对图形图像、多媒体感兴趣的,可以一起来研究研究。
下面先贴一段简单的检测程序,以后在找或者翻译两篇(e文比较烂 :~)
const DWORD _SSE_FEATURE_BIT = 0x02000000 //sse标识位
const DWORD _SSE2_FEATURE_BIT = 0x04000000; //sse2标识位
bool _IsFeature(DWORD dwRequestFeature)
{
// 通过设置eax积存器为1,然后调用cpuid即可从edx获得标识
DWORD dwFeature = 0;
__try
{
_asm
{
mov eax,1
cpuid
mov dwFeature,edx
}
}
__except ( EXCEPTION_EXECUTE_HANDLER)
{
return false;
}
if ((dwRequestFeature == _SSE_FEATURE_BIT ) &&(dwFeature & _SSE_FEATURE_BIT ))
{
__try {
__asm {
xorps xmm0, xmm0 //一条SSE指令
}
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
return (0);
}
return(true);
}
else if ((dwRequestFeature == _SSE2_FEATURE_BIT) &&(dwFeature & _SSE2_FEATURE_BIT))
{
__try
{
__asm {
xorpd xmm0, xmm0
}
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
return (0);
}
return(true);
}
return false;
}