Un enfoque es mirar la lista de ensamblaje del programa.
Después de compilar el programa (a través del botón Verificar o Descargar), ubique el directorio donde se han almacenado los archivos .cpp, .hex y .elf para el programa. (Si tiene problemas para encontrarlos, active brevemente las opciones de compilación detalladas en el IDE de arduino y observe los nombres de directorio en la salida).
En ese directorio, ejecute avr-objdump -S
fn.cpp.elf > listing.txt
donde fn.cpp.elf es el nombre de su boceto con .ino
quitado y .cpp.elf
agregado al final. Por ejemplo, con boceto serialecho.ino
:
avr-objdump -S serialecho.cpp.elf> listing.txt
Vea el listing.txt
archivo y reste la dirección inicial de cada función de su dirección final, utilizando la aritmética hexadecimal. Por ejemplo, con setup
código
configuración nula () {Serial.begin (9600); }
en el listado veremos
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>:
El cálculo 0x154–0x144 = 0x10 muestra que esta porción setup
tiene 16 bytes de longitud.
Estos ejemplos se generaron en un sistema Linux. Creo que el enfoque es el mismo en un sistema MSWindows, excepto que puede que tenga que decir en avr-objdump.exe
lugar de avr-objdump
, y puede que necesite especificar su ruta. Ver, por ejemplo, los resultados de Assemler, ¿dónde? hilo en forum.arduino.cc.