Как я могу получить список ассемблеров моих эскизов Arduino в Windows?

Я хотел бы видеть список ассемблера моих эскизов Arduino. Как я могу достичь этого?

Обновление: Я запускаю программное обеспечение Arduino на компьютере под управлением Windows.

Ответы

Ответ 1

Один из способов сделать это - использовать avr-objdump в файле .elf, созданном сборкой. Например, в OS X я могу сделать это:

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

(Очевидно, что ваш путь в Windows может быть другим.) Это создает разборку кода, часть которого будет выглядеть примерно так:

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>

Ответ 3

Следующие (хакерские) шаги предоставят ассемблерные списки эскизов Arduino и связанных с ними библиотек в Windows:

  • Загрузите (и переименуйте) командные файлы командной строки Arduino Windows в каталог, содержащий ваш эскиз (файл .pde)
  • Настройте необходимые переменные среды, указанные на приведенной выше ссылке.
  • Добавить -S в переменную abuild_gcc_opts в abuild.bat (строка 158)
  • Запустить abuild -r -c <pde_filename>
  • Ожидайте получения следующих предупреждений и ошибок, которые вы можете игнорировать:

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

Списки языков ассемблера можно найти в файлах .o в созданном каталоге obj. Например, список самого эскиза находится в obj\<pde_filename>.cpp.o

Ответ 4

Флаг -S (не s) также показывает код c. Также известен как смешанный список:

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