Une approche consiste à examiner la liste d'assemblage du programme.
Après avoir compilé le programme (via le bouton Vérifier ou Télécharger), recherchez le répertoire dans lequel les fichiers .cpp, .hex et .elf du programme ont été stockés. (Si vous ne parvenez pas à les trouver, activez brièvement les options de compilation verbeuse dans l'EDI arduino et regardez les noms de répertoire dans la sortie.)
Dans ce répertoire, exécutez avr-objdump -S
fn.cpp.elf > listing.txt
où fn.cpp.elf est le nom de votre esquisse avec .ino
décollage et .cpp.elf
ajout à la fin. Par exemple, avec un croquis serialecho.ino
:
avr-objdump -S serialecho.cpp.elf> listing.txt
Affichez le listing.txt
fichier et soustrayez l'adresse de début de chaque fonction de son adresse de fin, en utilisant l'arithmétique hexadécimale. Par exemple, avec du setup
code
void setup () {Serial.begin (9600); }
dans la liste on verra
00000144 <setup>:
...(6 lines snipped)...
144: 26 e0 ldi r18, 0x06 ; 6
146: 40 e8 ldi r20, 0x80 ; 128
148: 55 e2 ldi r21, 0x25 ; 37
14a: 60 e0 ldi r22, 0x00 ; 0
14c: 70 e0 ldi r23, 0x00 ; 0
14e: 80 e1 ldi r24, 0x10 ; 16
150: 92 e0 ldi r25, 0x02 ; 2
152: db c1 rjmp .+950 ; 0x50a <_ZN14HardwareSerial5beginEmh>
00000154 <loop>:
Le calcul 0x154–0x144 = 0x10 montre que cette partie setup
est longue de 16 octets.
Ces exemples ont été générés sur un système Linux. Je pense que l'approche est la même sur un système MSWindows, sauf que vous devrez peut-être dire à la avr-objdump.exe
place de avr-objdump
, et devrez peut-être spécifier son chemin. Voir, par exemple, les résultats d'Assemler, où? thread à forum.arduino.cc.
James Waldby - jwpat7
la source