¿Cómo puedo obtener una lista en lenguaje ensamblador de mi Arduino Bocetos en Windows?
Pregunta
Me gustaría ser capaz de ver una lista en lenguaje ensamblador de mis bocetos Arduino. ¿Cómo puedo lograr esto?
Actualización:. Estoy corriendo el software de Arduino en una máquina Windows
Solución
Una forma de hacer esto es utilizar avr-objdump
en el archivo .elf
creado por la construcción. Por ejemplo, en OS X que puedo hacer esto:
$ cd ~/arduino-0015/examples/Digital/Blink/applet $ avr-objdump -d Blink.elf
(Tu ruta en Windows puede ser diferente, por supuesto.) Esto produce un desmontaje del código, parte de la cual se verá algo como esto:
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>
Otros consejos
Si está utilizando Linux, puede seguir este tutorial sobre cómo compilar el Arduino sin el IDE .
Una vez hecho esto, se puede obtener una lista de montaje mediante la ejecución de gcc con la bandera -s.
Los siguientes pasos (hacky) proporcionará listados de lenguaje ensamblador de bocetos Arduino y bibliotecas asociadas en Windows:
- Descargar (y cambiar el nombre de) los archivos por lotes href="http://www.arduino.cc/playground/Code/WindowsCommandLine" rel="nofollow línea de comandos de Windows noreferrer"> Arduino en el directorio que contiene el boceto (el archivo
.pde
) - para configurar las variables de entorno necesarias como se especifica en la página vinculado anteriormente
- Añadir
-S
a la variableabuild_gcc_opts
enabuild.bat
(línea 158) -
abuild -r -c <pde_filename>
Ejecutar -
Esperar a obtener los siguientes avisos y errores, que se puede ignorar:
... 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
Los anuncios de lenguaje ensamblador se pueden encontrar en los archivos en el directorio .o
obj
creado. Por ejemplo, el listado para el propio boceto está en obj\<pde_filename>.cpp.o
Los -S (no s) indicador muestra el código C como well.Also saber inclusión en la lista mixta:
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>
...