繁体   English   中英

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

[英]How can I get an assembly language listing of my Arduino Sketches on Windows?

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

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

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

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

如果您使用的是Linux,那么您可以按照本教程了解如何在没有IDE的情况下编译Arduino

完成后,您可以通过使用-s标志运行gcc来获取程序集列表。

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

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

汇编语言列表可以在创建的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>
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM