[英]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草图和相关库的汇编语言列表:
.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
汇编语言列表可以在创建的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.