Auf Arduino erstelltes Programm in C und Assembler anschauen

Gast #5657619
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
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
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

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.