如何在Windows上获得Arduino草图的汇编语言列表?

我希望能够看到我的Arduino草图的汇编语言列表。 我怎样才能做到这一点?

更新:我在Windows机器上运行Arduino软件。

Solutions Collecting From Web of "如何在Windows上获得Arduino草图的汇编语言列表?"

一种方法是在构建的.elf文件中使用avr-objdump 。 例如,在OS X上可以这样做:

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

(你在Windows上的路径可能是不同的,显然。)这会产生代码的反汇编,其中的一部分看起来像这样:

  0000013a <主要>:
  13a:0e 94 3e 01调用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>

如果你使用的是Linux,你可以按照这个教程来学习如何在没有IDE的情况下编译Arduino 。

一旦你这样做,你可以通过使用-s标志运行gcc来获得程序集列表。

以下(哈希)步骤将在Windows上提供Arduino草图和关联库的汇编语言列表:

  1. 将Arduino Windows命令行批处理文件下载(并重命名)到包含草图的目录( .pde文件)
  2. 设置上述链接页面中指定的所需环境变量
  3. -S添加到abuild_gcc_opts中的abuild_gcc_opts变量(第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

汇编语言列表可以在创建的obj目录中的.o文件中找到。 例如,草图本身的列表在obj\<pde_filename>.cpp.o

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