diff options
author | Jannis Hoffmann <jannis@fehcom.de> | 2024-07-14 21:28:19 +0200 |
---|---|---|
committer | Jannis Hoffmann <jannis@fehcom.de> | 2024-07-14 21:28:19 +0200 |
commit | 1087d4df2a7342d2832ba3bab1843bf4a3040775 (patch) | |
tree | 96cd6ea198cc542f29c0660d5e5f7083af84d711 /src/x86cpuid.c |
Diffstat (limited to 'src/x86cpuid.c')
-rw-r--r-- | src/x86cpuid.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/x86cpuid.c b/src/x86cpuid.c new file mode 100644 index 0000000..f81c593 --- /dev/null +++ b/src/x86cpuid.c @@ -0,0 +1,40 @@ +/* Public domain. */ + +#include <signal.h> + +void nope() +{ + exit(1); +} + +int main() +{ + unsigned long x[4]; + unsigned long y[4]; + int i; + int j; + char c; + + signal(SIGILL,nope); + + x[0] = 0; + x[1] = 0; + x[2] = 0; + x[3] = 0; + + asm volatile(".byte 15;.byte 162" : "=a"(x[0]),"=b"(x[1]),"=c"(x[3]),"=d"(x[2]) : "0"(0) ); + if (!x[0]) return 0; + asm volatile(".byte 15;.byte 162" : "=a"(y[0]),"=b"(y[1]),"=c"(y[2]),"=d"(y[3]) : "0"(1) ); + + for (i = 1;i < 4;++i) + for (j = 0;j < 4;++j) { + c = x[i] >> (8 * j); + if (c < 32) c = 32; + if (c > 126) c = 126; + putchar(c); + } + + printf("-%08x-%08x\n",y[0],y[3]); + + return 0; +} |