我正在使用以下代码来设置cr0位以禁用缓存。当我编译时,请注意。
#include <stdio.h>
int main()
{
__asm__("pushl %eax\n\t"
"mov %cr0,%eax;\n\t"
"orl $(1 << 30),%eax;\n\t"
"mov %eax,%cr0;\n\t"
"wbinvd\n\t"
"popl %eax"
);
return 0;
}
我遇到了一个错误,提示mov操作数无效。
请问有没有人能够指引我找一份好的gcc x86-64指南来完成这些操作?另外,上面的代码到底是哪里出了问题?
gas
或nasm
进行组装),它是否有效? - Jonathan