Auf Arduino erstelltes Programm in C und Assembler anschauen

Gast #5657619
Lesenswert?
• ▲
▼
Wenn ich es richtig verstanden habe, ist die Arduino Software eine 
C-Biliothek, die dann in Maschinensprache kompiliert wird. Ich habe ein 
Programm für den Arduino geschrieben. Besteht zu Lernzwecken die 
Möglichkeit, das auf die Basisbefehle von C übersetzte und das daraus 
erzeugte Assembler Programm zu sehen?

Ich habe Microcontroller auf der MPLAB Entwicklungsumgebung von 
Microchip kennen gelernt. Dort ist zumindest bei Abschalten der 
Compiler-Optimierung hinter jedem einzelnen C-Befehl aufgeführt, wie er 
in Assembler übersetzt wurde. Mit AVR C und Assembler habe ich noch 
keine Erfahrung.
Persönliche Seite #5657645
Lesenswert?
• ▲
▼
Christine schrieb:
> Wenn ich es richtig verstanden habe, ist die Arduino Software eine
> C-Biliothek

Arduino ist C++, und es ist mehr als nur eine Bibliothek; der Code wird 
auch noch etwas umgebaut (leider).

Christine schrieb:
> das auf die Basisbefehle von C übersetzte
Bibliotheken werden nie auf "Basisbefehle" umgesetzt. Da wird direkt 
Maschinencode draus.

Arduino speichert beim Kompilieren unter "/tmp/arduino_build_xxx/" 
temporäre Dateien. Unter sketch/sketchname.ino.cpp findet sich 
vermutlich das, was der Compiler sieht. Unter sketchname.ino.elf findet 
sich das Kompilat. Das kann man mit
1
/pfad/zur/Arduino/IDE/hardware/tools/avr/bin/avr-objdump -d -S -C sketchname.ino.elf
disassemblieren, um den erzeugten Code zu sehen. Das "-S" bewirkt die 
Anzeige der C++-Zeilen. Da Arduino aber immer mit Optimierungen 
kompiliert, ist das ziemlich durcheinander und m.E. mehr verwirrend als 
hilfreich, weshalb ich das nie nutze. Das "-C" bewirkt die lesbare 
Anzeige der C++-Symbole (demangling).
Gast #5657830
Lesenswert?
• ▲
▼
Adam P. schrieb:
> Niklas G. schrieb:
>> Die gibt Arduino raus.
>
> Also ich habe hier ein Arduino-Projekt und da finde ich keine *.elf

Dann schaust du nicht in die richtige Ecke!

Ausführliche Meldungen aktivieren.
In den Meldungen erscheint das Build Verzeichnis.
Dort, und nur dort.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.