我在Windows上使用Mingw32,并尝试读取CPU微代码修订版。
我因使用非法指令(通过gdb看到)而崩溃,但是我无法确定是哪条指令导致了它。
我该如何找出哪一条指令是非法的,并且要获得加分,我的程序有什么问题?我正在尝试打印EDX寄存器。
#include<stdio.h>
int main(int argc, char *argv[])
{
int cookie = 42;
asm(
"MOVL $0x08, %%ecx\n\t"
"XOR %%eax, %%eax\n\t"
"XOR %%edx, %%edx\n\t"
"WRMSR\n\t"
"MOVL 1, %%EAX\n\t"
"cpuid\n\t"
"MOVL $0x08, %%ecx\n\t"
"rdmsr\n\t"
: "=rd"(cookie)
:
: "eax", "ecx", "edx"
);
printf("%d\n", cookie);
}
答案 0 :(得分:0)
libcpuid在MinGW-w64(http://libcpuid.sourceforge.net/)上编译。
也许您可以使用它来获取所需的信息,或者浏览其代码中有关如何进行访问的信息?