Forum: Compiler & IDEs Processkommunikation zwischen GCC und ASM


von vogt31337 (Gast)


Lesenswert?

Hallo,

ich programmiere nun schon seit einiger Zeit die AVRs direkt in
Asemmbler. Und wollte mal was "neues" ausprobieren. Also hab ich
kurzerhand mir WinAVR runtergeladen und spiele nun damit rum.

Meine Frage:
Gcc kann ja natürlich auch asm dateien übersetzen (.s), und wie:
a) kommuniziere ich zwischen C <-> ASM (mir wäre am liebsten über
Register, SRAM ist auch ok)
b) wie sorge ich dafür, dass das C programm meinem ASM programm nicht
in die Quere kommt.

Ich wollte gerne interrupte verwenden und die mit asm abarbeiten. In
erster Linie wollte ich C für komplizierte berechnungen einsetzen usw.
Gerade weil der interrupt Teil zeitkritisch ist und die Berechnungen
nicht.

Gibts da irgendwelche infos zu?
MfG V3

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

(Btw., mit *Prozess*kommunikation hat das nix zu tun, wenngleich es
natürlich eine solche Zwischen gcc und avr-as gibt.)

> Gcc kann ja natürlich auch asm dateien übersetzen (.s), und wie:

Normalerweise übrigens .S, damit sie durch den Präprozessor gezogen
werden und du Dinge aus <avr/io.h> nehmen kannst.

> a) kommuniziere ich zwischen C <-> ASM (mir wäre am liebsten über
> Register, SRAM ist auch ok)

Bitte lies dir erstmal die avr-libc-Doku durch.  Die zu deiner Library
passende hast du mit WinAVR auf der Platte, die aktuelle Doku ist
optisch ein wenig ansprechender, da solltest du insbesondere
durchlesen:

http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage
http://www.nongnu.org/avr-libc/user-manual/assembler.html
http://www.nongnu.org/avr-libc/user-manual/group__avr__sfr__notes.html

ggf. auch:

http://www.nongnu.org/avr-libc/user-manual/inline_asm.html

Eigentlich aber natürlich alles...

> b) wie sorge ich dafür, dass das C programm meinem ASM programm
nicht
> in die Quere kommt.

Indem du dich an oben zitierte Registerkonventionen hälst innerhalb
deiner Assemblerteile.  Die werden letztlich vom Compiler diktiert,
die Assemblerprogramme müssen sich da unterordnen (oder es ufert in
weitreichende push/pop-Orgien aus).

> Ich wollte gerne interrupte verwenden und die mit asm abarbeiten.

Naja, wenn du meinst.  In 95 % der Fälle kann man auch die locker in C
schreiben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.