4 Eagle:
v [DJGPP, DOS32] sem si na to napsal takovouhle funkci (je to pekna prasarna
):
Kód:
// precte dany MSR registr
QWord get_msr(DWord index)
{
__dpmi_regs r;
QWord output;
DWord hi, lo; // do transferbufferu vloz
_farpokel(_dos_ds,__tb,0x00CB320F);// RDMSR RETF code 0F32 CB
r.x.ss=0; // zasobnik na 0
r.x.sp=0;
r.x.ip=__tb&0xF; // CS:IP=adresa transferbufferu
r.x.cs=__tb>>4; // jehoz kod se provede
r.d.ecx=index; // ECX=jaky MSR registr cist?
__dpmi_simulate_real_mode_procedure_retf(&r); // prepni do RM a proved kod
hi=r.d.edx; // precti vracenou hodnotu
lo=r.d.eax; // MSR z EDX:EAX (hi:lo)
output=hi; // preved na 64b cislo
output=output<<32;
return(output|lo);
}
ale jak rikam fachci to jen v DOSu.