fork(2) download
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <cpuid.h>
  4. #include <string.h>
  5.  
  6. int main(int argc, char **argv)
  7. {
  8. // a função opcode CPUID:
  9. int op;
  10.  
  11. // registradores:
  12. int eax;
  13. int ebx;
  14. int ecx;
  15. int edx;
  16.  
  17. // parâmetro zero para CPUID indica que você quer o fabricante.
  18. op = 0;
  19.  
  20. __asm__ ("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
  21. : "a" (op));
  22.  
  23. // Receberá os valores de EBX, ECX e EDX para sistemas 32bits:
  24. char vendor[sizeof(int) * 3 + 1];
  25. strncpy(vendor, (const char*) &ebx, sizeof(int));
  26. strncpy(&vendor[8], (const char*) &ecx, sizeof(int));
  27. strncpy(&vendor[4], (const char*) &edx, sizeof(int));
  28. vendor[12] = '\0'; // terminador nulo
  29.  
  30. printf("CPU: %s", vendor);
  31.  
  32. return 0;
  33. }
  34.  
Success #stdin #stdout 0s 2008KB
stdin
Standard input is empty
stdout
CPU: AuthenticAMD