#include static inline int cpu_number(void) { long eax = 1, ebx = 0, ecx = 0, edx = 0; char apic_id = 0; int cpun = -1; asm("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (eax)); apic_id = (char) (ebx >> 24) & 0xff; printf("eax = %lx, ebx = %lx, ecx = %lx, edx = %lx\n", eax, ebx, ecx, edx); printf("apic_id = %lx\n", apic_id); return cpun; } int main (void) { printf("%d\n", cpu_number()); return 0; }