15

Arduino スケッチのアセンブリ言語のリストを表示できるようにしたいと考えています。どうすればこれを達成できますか?

更新: Windows マシンで Arduino ソフトウェアを実行しています。

4

5 に答える 5

13

これを行う 1 つの方法は、ビルドによって作成されavr-objdumpたファイルで を使用することです。.elfたとえば、OS XI では次のことができます。

$ 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 <セットアップ>
 142: 0e 94 80 00 call 0x100 <ループ>
 146: fd cf rjmp .-6 ; 0x142 <メイン + 0x8>
于 2009-05-30T23:27:27.833 に答える
6

Linux を使用している場合は、IDE を使用せずに Arduino 用にコンパイルする方法に関するこのチュートリアルに従うことができます。

これが完了したら、-s フラグを指定して gcc を実行すると、アセンブリ リストを取得できます。

于 2009-05-28T08:28:42.663 に答える
3

次の (ハッキーな) 手順では、Windows で Arduino スケッチと関連するライブラリのアセンブリ言語のリストが提供されます。

  1. Arduino Windows コマンド ライン バッチ ファイル.pdeを、スケッチ (ファイル)を含むディレクトリにダウンロード (および名前を変更) します。
  2. 上記のリンクされたページで指定されているように、必要な環境変数を設定します
  3. (158 行目)の変数に追加-Sします。abuild_gcc_optsabuild.bat
  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

于 2009-05-28T15:45:31.673 に答える
0

-S (not 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>
...
于 2014-02-20T21:54:19.160 に答える