diff --git a/.gitignore b/.gitignore index 5f34a4c..152efe2 100644 --- a/.gitignore +++ b/.gitignore @@ -37,7 +37,8 @@ ipch libcpuid/x32 libcpuid/x64 cpuid_tool/x32 -cpuid_tool/x64 +cpuid_tool/ +utils/decode_cpuid_revision *.vcxproj.user build /docs diff --git a/utils/decode_cpuid_revision.c b/utils/decode_cpuid_revision.c new file mode 100644 index 0000000..ed153cd --- /dev/null +++ b/utils/decode_cpuid_revision.c @@ -0,0 +1,31 @@ +/* A simple tool to decode the "CPUID Revision". +Build with: +gcc decode_cpuid_revision.c -lcpuid -o decode_cpuid_revision +*/ +#include +#include +#include "../libcpuid/libcpuid.h" + +#define ANSWER_TO_THE_ULTIMATE_QUESTION_OF_LIFE_THE_UNIVERSE_AND_EVERYTHING 42 + + +int main(int argc, char** argv) +{ + struct cpu_raw_data_t raw; + struct cpu_id_t data; + + if (argc < 2) { + printf("%s: x86 CPUID Revision is required as argument.\n", argv[0]); + return 1; + } + raw.basic_cpuid[0][EAX] = ANSWER_TO_THE_ULTIMATE_QUESTION_OF_LIFE_THE_UNIVERSE_AND_EVERYTHING; + raw.basic_cpuid[1][EAX] = strtol(argv[1], NULL, 16); + cpu_identify(&raw, &data); + + printf("%s decoded to:\n", argv[1]); + printf(" family : %1$d (%1$02Xh)\n", data.x86.family); + printf(" model : %1$d (%1$02Xh)\n", data.x86.model); + printf(" stepping : %1$d (%1$02Xh)\n", data.x86.stepping); + printf(" ext_family : %1$d (%1$02Xh)\n", data.x86.ext_family); + printf(" ext_model : %1$d (%1$02Xh)\n", data.x86.ext_model); +}