Nur eine kurze Frage über die Codeerzeugung von Arduino.
Wenn ich z.B. von einem Integer-Wert die negative Form haben will kann ich schreiben x = ~x + 1 oder x = -x. Wird beim zweiten eine Multiplikation ausgeführt? Scheinbar das Gleiche, da der Flashverbrauch exakt gleich ist. Kann man sich den Machinencode direkt in der Arduino IDE anzeigen?
LeRoi:
... Kann man sich den Machinencode direkt in der Arduino IDE anzeigen?
In der IDE wohl nicht (was die angeht, bin ich allerdings ziemlich ahnungslos).
Ich habe mir allerdings mal ein Makefile geschrieben, mit dem auch der Maschinencode eines Programms erzeugt werden kann. Das reine Makefile liegt hier. Siehe Abschnitt „asm“
Die %TEMP%\build.....tmp<deinSketch>.hex kannst du dir mit jedem Texteditor ansehen. Die enthält den nackten binären Maschinencode als lesbaren Text.
Was du vermutlich willst, ist der erzeugte Assemblercode. -> google mal avr-objdump
michael_x:
Die %TEMP%\build.....tmp<deinSketch>.hex kannst du dir mit jedem Texteditor ansehen. Die enthält den nackten binären Maschinencode als lesbaren Text.
Was du vermutlich willst, ist der erzeugte Assemblercode. -> google mal avr-objdump
Ja, Assemblercode ist ja nur die etwas leserlichere Form davon.
combie:
Das geht mit einem einfachen Trick, auch direkt aus der IDE.
Dann wird beim kompilieren automatisch ein Assembler Dump im Build Verzeichnis erzeugt.
Dazu braucht es einen Eintrag in der platform.txt, als letzte Zeile: