#include #include #include #include int main(int argc, char **argv) { uint32_t id, arg; uint32_t eax, ebx, ecx, edx; setprogname(argv[0]); if (argc != 3) errx(1, "Usage: %s \n", getprogname()); id = strtol(argv[1], NULL, 0); arg = strtol(argv[2], NULL, 0); printf("# cpuid[eax=0x%x, ecx=0x%x]\n", id, arg); asm("cpuid" : /*out*/ "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : /*in*/ "a"(id), "c"(arg)); printf("eax 0x%x\n", eax); printf("ebx 0x%x\n", ebx); printf("ecx 0x%x\n", ecx); printf("edx 0x%x\n", edx); fflush(stdout); return ferror(stdout); }