Autor Thema: inline assembler  (Gelesen 7352 mal)

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« am: 26. April 2004, 18:50 »
kennt jemand zufällig ein Tutorial (deutsch) zum gcc inline assembler
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #1 am: 26. April 2004, 19:44 »
Musst du einfach nach der AT Assembler Syntax suchen, nach dem arbeitet der nämlich. Also gcc Inline: Im Gegensatz zur Intelkonvention die bei nasm verwendung findet wird bei at zuerst die quelle dann das ziel angegeben also:
Intel : mov ax,bx
AT: movw %bx,%ax
wie man sieht müssen vor die register noch % gemacht werden. zu den befehlen muss denn noch jewils geschrieben werden ob ein byte word oder dword vorliegt also dann unterscheiden zwischen movb movw movd.
Bei Konstanten wird ein $ davorgemacht also zum beispiel movb $0xA,al
so ganz kurz , es gibt noch mehr aber das dauert mir grade zu lang;) es gibt dann noch die extended version dazu da müssen dann zwei % vor die register und da ändert sich noch einiges. Also wenn du den inline bei gcc haben willst musst du dir eine komplett andere syntax angewöhnen die mit nasm fast garnichts mehr zu tun hat, ich komm inzwischen mit beidem ganz gut klar, nur das extended macht schwierigkeiten. Ich mache das lieber mit nasm und linke es dann dazu das geht schneller. Ich kann aber mal ein kurzes tut schreiben und pack es dann auf meine HP
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #2 am: 26. April 2004, 19:55 »
thx
@Roshl

Wäre echt ma ne coole Idee mit dem Tut im Netz hab ich nämlich absolout nichts gefunden.

Von mir aus würd ich auch viel lieber alles in nasm machen nur ich hab halt kein bock so sachen wie sti cli als funktion zu realisieren.
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #3 am: 26. April 2004, 20:03 »
die cli und sti hab ich mit inline gemacht;) da haste se:
void sti() {asm volatile("sti");}
void cli() {asm volatile("cli");}
ganz simpel
das mit dem tut kann aber dauern
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #4 am: 26. April 2004, 20:18 »
thx
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

kleiner

  • Beiträge: 131
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 26. April 2004, 20:38 »
Unter http://www.linux-kernel.de/appendix/index.html, Anhang C findet ihr ein Tutorial: Anmerkungen zu C. Darin geht es auch um Attribute, Besonderheiten, Optimierungen und Inline-ASM im gcc. Sehr empfehlenswert.

lobmann

  • Beiträge: 243
    • Profil anzeigen
    • http://www.fallek.de.vu
Gespeichert
« Antwort #6 am: 26. April 2004, 21:34 »
thx
@kleiner
jetz hab ich erstma wieder was zu tun
Man kann doch nem alten Mann nicht in den Bart spucken und sagen es hat geschneit

kleiner

  • Beiträge: 131
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 27. April 2004, 16:45 »
tja, das Ding gänzlich durchzumachen sollte etwas dauern, aber einiges bringen.
Muss ich mich nachm Abi wohl auch mal ran machen.
Aber es gibt einem die mächtigen Werkzeuge von gcc an die Hand.

 

Einloggen