Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main(void) {
- int c = 0, d = 0, a = 0, model = 0, family = 0;
- __asm__
- (
- "movl $1, %%eax; \n"
- "cpuid; \n"
- "movl %%ecx, %0; \n"
- "movl %%edx, %1; \n"
- "movl %%eax, %2; \n"
- : "=m"(c), "=m"(d), "=m"(a)
- :
- : "memory"
- );
- int tmpfam = (a & 0x00000F00) >> 8;
- if (tmpfam == 15) {
- family = tmpfam + ((a & 0x0FF00000) >> 20);
- } else {
- family = tmpfam;
- }
- int tmpmod = ((a & 0x000000F0) >> 4);
- if (tmpfam == 6 || tmpfam == 15) {
- model = ((a & 0x000F0000) >> 12) + tmpmod;
- } else {
- model = tmpmod;
- }
- printf("family=%d model=%d ecx=0x%x edx=0x%x", family, model, c, d);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement