mirror of
https://github.com/Dr-Noob/cpufetch.git
synced 2026-03-25 16:00:39 +01:00
Moved to asm cpuid call. Support for CPU name string. Output skecth on main
This commit is contained in:
77
extended.c
Normal file
77
extended.c
Normal file
@@ -0,0 +1,77 @@
|
||||
#include "extended.h"
|
||||
|
||||
char* getCPUName() {
|
||||
unsigned eax, ebx, ecx, edx;
|
||||
|
||||
//First, check we can use extended
|
||||
eax = 0x80000000;
|
||||
cpuid(&eax, &ebx, &ecx, &edx);
|
||||
if(eax < 0x80000001)
|
||||
return NULL;
|
||||
|
||||
//We can, fetch name
|
||||
char* name = malloc(sizeof(char)*64);
|
||||
|
||||
eax = 0x80000002;
|
||||
cpuid(&eax, &ebx, &ecx, &edx);
|
||||
|
||||
name[__COUNTER__] = eax & MASK;
|
||||
name[__COUNTER__] = (eax>>8) & MASK;
|
||||
name[__COUNTER__] = (eax>>16) & MASK;
|
||||
name[__COUNTER__] = (eax>>24) & MASK;
|
||||
name[__COUNTER__] = ebx & MASK;
|
||||
name[__COUNTER__] = (ebx>>8) & MASK;
|
||||
name[__COUNTER__] = (ebx>>16) & MASK;
|
||||
name[__COUNTER__] = (ebx>>24) & MASK;
|
||||
name[__COUNTER__] = ecx & MASK;
|
||||
name[__COUNTER__] = (ecx>>8) & MASK;
|
||||
name[__COUNTER__] = (ecx>>16) & MASK;
|
||||
name[__COUNTER__] = (ecx>>24) & MASK;
|
||||
name[__COUNTER__] = edx & MASK;
|
||||
name[__COUNTER__] = (edx>>8) & MASK;
|
||||
name[__COUNTER__] = (edx>>16) & MASK;
|
||||
name[__COUNTER__] = (edx>>24) & MASK;
|
||||
|
||||
eax = 0x80000003;
|
||||
cpuid(&eax, &ebx, &ecx, &edx);
|
||||
|
||||
name[__COUNTER__] = eax & MASK;
|
||||
name[__COUNTER__] = (eax>>8) & MASK;
|
||||
name[__COUNTER__] = (eax>>16) & MASK;
|
||||
name[__COUNTER__] = (eax>>24) & MASK;
|
||||
name[__COUNTER__] = ebx & MASK;
|
||||
name[__COUNTER__] = (ebx>>8) & MASK;
|
||||
name[__COUNTER__] = (ebx>>16) & MASK;
|
||||
name[__COUNTER__] = (ebx>>24) & MASK;
|
||||
name[__COUNTER__] = ecx & MASK;
|
||||
name[__COUNTER__] = (ecx>>8) & MASK;
|
||||
name[__COUNTER__] = (ecx>>16) & MASK;
|
||||
name[__COUNTER__] = (ecx>>24) & MASK;
|
||||
name[__COUNTER__] = edx & MASK;
|
||||
name[__COUNTER__] = (edx>>8) & MASK;
|
||||
name[__COUNTER__] = (edx>>16) & MASK;
|
||||
name[__COUNTER__] = (edx>>24) & MASK;
|
||||
|
||||
eax = 0x80000004;
|
||||
cpuid(&eax, &ebx, &ecx, &edx);
|
||||
|
||||
name[__COUNTER__] = eax & MASK;
|
||||
name[__COUNTER__] = (eax>>8) & MASK;
|
||||
name[__COUNTER__] = (eax>>16) & MASK;
|
||||
name[__COUNTER__] = (eax>>24) & MASK;
|
||||
name[__COUNTER__] = ebx & MASK;
|
||||
name[__COUNTER__] = (ebx>>8) & MASK;
|
||||
name[__COUNTER__] = (ebx>>16) & MASK;
|
||||
name[__COUNTER__] = (ebx>>24) & MASK;
|
||||
name[__COUNTER__] = ecx & MASK;
|
||||
name[__COUNTER__] = (ecx>>8) & MASK;
|
||||
name[__COUNTER__] = (ecx>>16) & MASK;
|
||||
name[__COUNTER__] = (ecx>>24) & MASK;
|
||||
name[__COUNTER__] = edx & MASK;
|
||||
name[__COUNTER__] = (edx>>8) & MASK;
|
||||
name[__COUNTER__] = (edx>>16) & MASK;
|
||||
name[__COUNTER__] = (edx>>24) & MASK;
|
||||
|
||||
name[__COUNTER__] = '\0';
|
||||
return name;
|
||||
}
|
||||
Reference in New Issue
Block a user