2009-05-28 20 views

Respuesta

13

Una forma de hacerlo es usar avr-objdump en el archivo .elf creado por la compilación. Por ejemplo, en OS XI se puede 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> 
+0

Hay instrucciones más detalladas aquí (para la persona menos avanzada, creo que su información anterior no habría sido suficiente): http://rcarduino.blogspot.com/2012/09/how-to-view-arduino-assembly. html –

6

Si está utilizando Linux, puede seguir this tutorial on how to compile for the Arduino without the IDE.

Una vez hecho esto, se puede obtener una lista de montaje mediante la ejecución de gcc con la bandera -s.

+0

@Magnus Me estoy ejecutando en Windows, pero el enlace aún puede ser útil. Lo echaré un vistazo. Gracias. –

3

los siguientes pasos (hacky) proporcionará listados de lenguaje ensamblador de bocetos Arduino y bibliotecas asociadas en Windows:

  1. Descarga (y renombrar) el Arduino Windows command line batch files en el directorio que contiene el boceto (el archivo .pde)
  2. definir las variables de entorno necesarias como se especifica en la página vinculado anteriormente
  3. Añadir -S a la variable abuild_gcc_opts en abuild.bat (línea 158)
  4. Run abuild -r -c <pde_filename>
  5. esperan obtener los siguientes avisos y errores, que se puede pasar por alto: los listados de lenguaje

    ... 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

El montaje se pueden encontrar en los archivos .o en elcreadodirectorio. Por ejemplo, la lista del boceto en sí está en obj\<pde_filename>.cpp.o

0

la bandera -S (no s) muestra el código c como well.Also saber listado como mixto:

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> 
... 
Cuestiones relacionadas