内联汇编读取cr0, cr4等值以及fxsave, fxrstor指令的使用

long unsigned int cr0;
long unsigned int cr4;
asm volatile("mov %%cr0, %0": "=b"(cr0));
asm volatile("mov %%cr4, %0": "=b"(cr4));
printfk("cr0 = %lx, cr4 = %lx\n", cr0, cr4);

其实和读一般寄存器一样,只是注意要在内核态运行,否则会segment fault

 

fxsave, fxrstor指令的使用

char region[512] __attribute__((aligned(16)));
char *regionp = region;

int main ()
{

   asm volatile(" fxsave %0" : "=m"(*regionp));   
   asm volatile(" fxrstor %0" :: "m"(*regionp)); 
   return 0;
}



 

 

你可能感兴趣的:(内联汇编读取cr0, cr4等值以及fxsave, fxrstor指令的使用)