Jak w C dostać się do rejestrów flag i cr0?

0

Witam.
Orientuje sie ktos z Was jak za pomoca jezyka C sprawdzic (ew. edytowac) zawartosc
rejestrow procesora, konkretnie chodzi mi o rejestr flag i cr0 ? Nie chodzi mi o wstawki asma.
Bede wdzieczny za kazda informacje na ten temat.

0

to jak proba zabicia mrowki walcem drogowym. wykonanie dowolnego kody wysokiego poziomu moze flagi zmienic 10 razy, zanim sie w ogole zorientujesz.

int flagi;
asm{
  pushfd

  pop [flagi]
// albo:
  pop eax
  mov [flagi],eax
}
printf("%x\n",flagi);
asm{
  push [flagi]
//  albo
  mov  eax,[flagi]
  push eax

  popfd
}
0

Ja pozwolę sobie tylko skromnie zapytać: po jakiego uja?

0

Coś mi śmierdzi okolicami OSDevu... Jaki kompilator, bo to dosyć istotne?

0
flabra napisał(a)

to jak proba zabicia mrowki walcem drogowym. wykonanie dowolnego kody wysokiego poziomu moze flagi zmienic 10 razy, zanim sie w ogole zorientujesz.

Czyżby? :P
W Linuksie:
int getcontext(ucontext_t *ucp);

W ogoóle nie trzeba używać assemblera.
Jeżeli kod np. działa w signal handlerze to kontekst można bezpośrednio pobrać z ostatniego argumentu.

0

W win jest getThreadContext (czy jakos podobnie) - msdn prawde Ci powie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1