Comment puis-je obtenir une liste de langage assembleur de mon Sketches Arduino sous Windows?
Question
Je voudrais être en mesure de voir une liste de langage assembleur de mes croquis Arduino. Comment puis-je y parvenir?
Mise à jour:. Je suis en cours d'exécution du logiciel Arduino sur une machine Windows
La solution
Une façon de faire est d'utiliser avr-objdump
sur le fichier .elf
créé par la construction. Par exemple, sur OS X que je peux faire ceci:
$ cd ~/arduino-0015/examples/Digital/Blink/applet $ avr-objdump -d Blink.elf
(Votre chemin sur Windows peut être différent, évidemment.) Cela produit un démontage du code, dont une partie ressemble à quelque chose comme ceci:
0000013a <main>: 13a: 0e 94 3e 01 call 0x27c <init> 13e: 0e 94 97 00 call 0x12e <setup> 142: 0e 94 80 00 call 0x100 <loop> 146: fd cf rjmp .-6 ; 0x142 <main+0x8>
Autres conseils
Si vous utilisez Linux, vous pouvez suivre ce tutoriel sur la façon de compiler pour l'Arduino sans IDE.
Une fois que vous faites cela, vous pouvez obtenir une liste de montage par gcc en cours d'exécution avec le drapeau -s.
Les suivants (aki) étapes fourniront des listes de langage assembleur de croquis Arduino et les bibliothèques associées sous Windows:
- Télécharger (et renommer) les Arduino fichiers batch de ligne de commande Windows dans le répertoire contenant votre croquis (le fichier
.pde
) - Configurer les variables d'environnement requises comme indiqué dans la page lien ci-dessus
- Ajouter
-S
à la variableabuild_gcc_opts
dansabuild.bat
(ligne 158) - Exécuter
abuild -r -c <pde_filename>
-
Attendez-vous à obtenir les avertissements et les erreurs suivantes, que vous pouvez ignorer:
... warning: #warning "This file has been moved to <util/delay.h>."
.\obj\<pde_filename>.cpp.o: file format not recognized: treating as linker script
.\obj\<pde_filename>.cpp.o:1: syntax error
Les listes de langage assembleur peuvent être trouvés dans les fichiers .o
dans le répertoire obj
créé. Par exemple, la liste pour le croquis lui-même est en obj\<pde_filename>.cpp.o
Les -S (non s) drapeau montrer le code c comme well.Also savoir que la liste mixte:
Linux: (.arduino / Preferences.txt: delete_target_folder = false)
$ cd /tmp/buildxxxx.tmp
$ avr-objdump -dS Blink.cpp.elf
int main(void)
{
init();
2f4: 8a df rcall .-236 ; 0x20a <init>
...