Hi,
Danke für eure Antworten.
Also ich habe es mal in C umgewandelt hier der Code:
unsigned int read_cr0()
{
unsigned int cr0;
__asm__("movl %%cr0, %0" : "=a" (cr0));
return cr0;
}
unsigned int write_cr0()
{
unsigned int cr0;
__asm__("push %%ebp" : "=a" (cr0));
__asm__("movl %%esp, %%ebp" : "=a" (cr0));
__asm__("movl %%ebp+8, %%eax" : "=a" (cr0));
__asm__("movl %%eax, %0" : "=a" (cr0));
__asm__("pop %%ebp" : "=a" (cr0));
return cr0;
}
unsigned int read_cr3()
{
unsigned int cr3;
__asm__("movl %%cr3, %0" : "=a" (cr3));
return cr3;
}
unsigned int write_cr3()
{
unsigned int cr3;
__asm__("push %%ebp" : "=a" (cr3));
__asm__("movl %%esp, %%ebp" : "=a" (cr3));
__asm__("movl %%ebp+8, %%eax" : "=a" (cr3));
__asm__("movl %%eax, %0" : "=a" (cr3));
__asm__("pop %%ebp" : "=a" (cr3));
return cr3;
}
Hab nurnoch Probleme das bei dem ebp + 8 der Fehler :
Error: junk `+8' after register kommt.
Ist der Code ansonsten korrekt? Nicht das ich später irgendwie hänge und es liegt daran!
Noch eine Frage und zwar waurm macht man z.b. hier:
__asm__("movl %%eax, %0" : "=a" (cr3));
Bei dem mov ein l hintendrann? und warum schreibt mann %o anstatt %%cr3???
MFG ReduX