Come posso ottenere un elenco linguaggio assembly del mio Arduino schizzi su Windows?

StackOverflow https://stackoverflow.com/questions/919781

  •  06-09-2019
  •  | 
  •  

Domanda

Mi piacerebbe essere in grado di vedere un elenco linguaggio assembly dei miei schizzi Arduino. Come posso raggiungere questo obiettivo?

Aggiornamento:. Sono in esecuzione il software di Arduino su una macchina Windows

È stato utile?

Soluzione

Un modo per farlo è quello di utilizzare avr-objdump sul file .elf creato dalla compilazione. Ad esempio, su OS X posso fare questo:

$ cd ~/arduino-0015/examples/Digital/Blink/applet
$ avr-objdump -d Blink.elf

(Il tuo percorso su Windows potrebbe essere diverso, ovviamente.) Questo produce un disassemblaggio del codice, di cui una parte sarà simile a questa:

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>

Altri suggerimenti

Se si sta usando Linux, è possibile seguire questo tutorial su come compilare per Arduino senza l'IDE .

Una volta fatto questo, è possibile ottenere un elenco di montaggio eseguendo gcc con l'opzione -s.

I seguenti (hacky) passi forniranno annunci linguaggio assembly di schizzi Arduino e le librerie associate su Windows:

  1. Download (e rinominare) i href="http://www.arduino.cc/playground/Code/WindowsCommandLine" file batch Arduino nella directory contenente lo schizzo (il file .pde)
  2. Impostare le variabili di ambiente richieste, come specificato nella pagina di cui sopra collegato
  3. Aggiungi -S alla variabile abuild_gcc_opts in abuild.bat (linea 158)
  4. Esegui abuild -r -c <pde_filename>
  5. Si aspettano di ottenere i seguenti avvisi e gli errori, che si può ignorare:

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

Gli annunci linguaggio assembly possono essere trovati nei file .o nella directory obj creato. Ad esempio l'elenco relativo al sé schizzo è in obj\<pde_filename>.cpp.o

I -S (non s) bandiera mostrano il codice c come well.Also sapere come lista mista:

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>
...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top