Advertisement
_takumi

cpuid

Jan 20th, 2023
970
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.79 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4.     int c = 0, d = 0, a = 0, model = 0, family = 0;
  5.     __asm__
  6.     (
  7.             "movl $1, %%eax; \n"
  8.             "cpuid; \n"
  9.             "movl %%ecx, %0; \n"
  10.             "movl %%edx, %1; \n"
  11.             "movl %%eax, %2; \n"
  12.             : "=m"(c), "=m"(d), "=m"(a)
  13.             :
  14.             : "memory"
  15.             );
  16.     int tmpfam = (a & 0x00000F00) >> 8;
  17.     if (tmpfam == 15) {
  18.         family = tmpfam + ((a & 0x0FF00000) >> 20);
  19.     } else {
  20.         family = tmpfam;
  21.     }
  22.     int tmpmod = ((a & 0x000000F0) >> 4);
  23.     if (tmpfam == 6 || tmpfam == 15) {
  24.         model = ((a & 0x000F0000) >> 12) + tmpmod;
  25.     } else {
  26.         model = tmpmod;
  27.     }
  28.     printf("family=%d model=%d ecx=0x%x edx=0x%x", family, model, c, d);
  29.     return 0;
  30. }
  31.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement