Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Cool-Andy am 27. December 2009, 19:17

Titel: Register nach C-Variable
Beitrag von: Cool-Andy am 27. December 2009, 19:17
Nochmal doofe Frage:
Ich benötige in einer C-Funktion einen Inline-Assemblerbefehl, der mir ein Register in eine Variable einließt.
In der Wiki habe ich schon mal geschaut, aber entweder ich überlese es die ganze Zeit oder ich bin zu doof die richtige Seite anzuklicken.

Bitte helft mir! Danke!  :|
Titel: Re: Register nach C-Variable
Beitrag von: XanClic am 27. December 2009, 19:30
uint32_t ebx;
__asm__ __volatile__ ("" : "=b"(ebx));
Sollte dir theoretisch ebx in die Variable "ebx" einlesen. Für eax nimmst du eben =a, für ecx =c, für edx =d, für esi =S und für edi =D (mehr kenne ich nicht :wink:).
Titel: Re: Register nach C-Variable
Beitrag von: Cool-Andy am 27. December 2009, 19:32
Danke, werde ich gleich mal ausprobieren.
Titel: Re: Register nach C-Variable
Beitrag von: kevin am 28. December 2009, 11:41
Allerdings bringt das Register mit einem leeren asm natürlich wenig, weil es direkt nach dem asm wieder mit was anderem überschrieben sein kann. [Edit: Ähm, umgekehrt, aber das Problem ist das gleiche ;)]

Der passende Wikiartikel ist übrigens http://lowlevel.brainsware.org/wiki/index.php/Inline-Assembler_mit_GCC