Как я могу получить список ассемблерных моих эскизов Arduino для Windows? - PullRequest
13 голосов
/ 28 мая 2009

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

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

Ответы [ 4 ]

13 голосов
/ 31 мая 2009

Один из способов сделать это - использовать 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>
6 голосов
/ 28 мая 2009

Если вы используете Linux, вы можете следовать этому руководству по компиляции для Arduino без IDE .

Как только вы это сделаете, вы можете получить список сборок, запустив gcc с флагом -s.

3 голосов
/ 28 мая 2009

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

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

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

0 голосов
/ 21 февраля 2014

Флаг -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>
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...