mikrocontroller.net

Forum: Compiler & IDEs Processkommunikation zwischen GCC und ASM


Autor: vogt31337 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.htm...
http://www.nongnu.org/avr-libc/user-manual/assembler.html
http://www.nongnu.org/avr-libc/user-manual/group__...

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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.