最近學習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;
}