Autor Thema: Register nach C-Variable  (Gelesen 4342 mal)

Cool-Andy

  • Gast
Gespeichert
« 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!  :|

XanClic

  • Beiträge: 261
    • Profil anzeigen
    • github
Gespeichert
« Antwort #1 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:).

Cool-Andy

  • Gast
Gespeichert
« Antwort #2 am: 27. December 2009, 19:32 »
Danke, werde ich gleich mal ausprobieren.

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 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
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen