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

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