I use following code to read msr, but it crashed when running. I don't know why.
#include <stdio.h>
#include <stdlib.h>
int main()
{
register long ecx asm("%ecx");
register long eax asm("%eax");
register long edx asm("%edx");
asm("mov %1, %0":"=r"(ecx):"i"(0x1B0));
asm("rdmsr");
/*
asm("xor %1, %0":"+r"(eax):"r"(eax));
asm("xor %1, %0":"+r"(edx):"r"(edx));
asm("mov %1, %0":"=r"(eax):"i"(0x01));
printf("%ld %ld %ld",ecx,eax,edx);
*/
}