Processkommunikation zwischen GCC und ASM

Gast #284424
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
Moderator Persönliche Seite #284425
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren