何年前?
もういっちょテスト。懐かし(?)のSSE判定。
なんか、1回だけ使ったことあったな。
/* Distinguish an Expansion function. */ #include <stdio.h> #define FLAG_MMX 0x00800000 #define FLAG_3DNOW 0x80000000 #define FLAG_SSE 0x02000000 #define HAS_MMX 1 #define HAS_3DNOW 2 #define HAS_SSE 3 void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx) { unsigned int dwAX, dwBX, dwCX, dwDX; _asm { mov eax,op cpuid mov dwAX,eax mov dwBX,ebx mov dwCX,ecx mov dwDX,edx } *eax = dwAX; *ebx = dwBX; *ecx = dwCX; *edx = dwDX; } int check_cpu(void) { int c[5]; /* check CPU has CPUID */ cpuid(0, &c[1], &c[2], &c[3], &c[4]); if(c[1] < 1) return( 0 ); /* check CPU has SSE */ cpuid(1, &c[1], &c[2], &c[3], &c[4]); if((c[4] & FLAG_SSE) == FLAG_SSE) return( HAS_SSE ); /* check CPU has 3DNow! */ cpuid(0x80000001, &c[1], &c[2], &c[3], &c[4]); if((c[4] & FLAG_3DNOW) == FLAG_3DNOW) return( HAS_3DNOW ); /* check CPU has MMX */ cpuid(1, &c[1], &c[2], &c[3], &c[4]); if((c[4] & FLAG_MMX) == FLAG_MMX) return( HAS_MMX ); return( 0 ); } int main(void) { int cpu_code; cpu_code = check_cpu(); printf("MMX:\t1\n"); printf("3DNOW:\t2\n"); printf("SSE:\t3\n"); printf("This Computer has function: %d\n", cpu_code); printf("\n[Press Enter]"); getchar(); return( cpu_code ); }
cppってか完全にcだけど。(↓もだけど)
しかしこのシンタックスハイライトは、すごいっちゅーか、便利すぎるな。
Terapadとかのテキスト装飾ルールに適応したい。というか、ローカルソフトとして欲しいかも。
ページで作ってからソース開くのでも良いんだけどAPIとしても欲しいところだね。(笑)
コレだけのために使う価値ありだな。