Rumah > Artikel > pembangunan bahagian belakang > Adakah Kod yang Disediakan Mencukupi untuk Menyemak Sokongan SSE3 pada CPU?
Adakah kod berikut mencukupi untuk mengesahkan sama ada CPU menyokong set arahan SSE3?
bool CheckSSE3() { int CPUInfo[4] = {-1}; //-- Get number of valid info ids __cpuid(CPUInfo, 0); int nIds = CPUInfo[0]; //-- Get info for id "1" if (nIds >= 1) { __cpuid(CPUInfo, 1); bool bSSE3NewInstructions = (CPUInfo[2] & 0x1) || false; return bSSE3NewInstructions; } return false; }
Malangnya, coretan kod yang disediakan mempunyai had pada Windows XP. Untuk mengatasinya dan memastikan pengesanan tepat bagi sokongan SSE3 merentas julat sistem yang lebih luas, penyelesaian yang lebih komprehensif disyorkan.
Di bawah ialah pendekatan yang menyediakan pengesanan SSE3 yang boleh dipercayai pada Windows XP dan sistem pengendalian lain:
// Access CPUID instruction #ifdef _WIN32 #define cpuid(info, x) __cpuidex(info, x, 0) #else #include <cpuid.h> void cpuid(int info[4], int InfoType){ __cpuid_count(InfoType, 0, info[0], info[1], info[2], info[3]); } #endif // Detect SSE3 support bool HW_SSE3; int info[4]; cpuid(info, 0); int nIds = info[0]; if (nIds >= 0x00000001){ cpuid(info,0x00000001); HW_SSE3 = (info[2] & ((int)1 << 0)) != 0; }
Atas ialah kandungan terperinci Adakah Kod yang Disediakan Mencukupi untuk Menyemak Sokongan SSE3 pada CPU?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!