【大喜利】看板の文字を埋めてください

Arduino言語で書かれたプログラムがArduinoIDEでどのような機械語に翻訳されているか、ちょっと興味があり確かめてみたくなりました。
コンパイル結果を機械語(アセンブラ)で表示する方法教えてください。

ArduinoIDEのオプションなど探してみたのですが、表示方法がみつからなかったので、よろしくお願いします。

質問者からの補足コメント

  • HAPPY

    備忘録の意味を込めて書きます。
    arduino.exe を実行し、対象となるスケッチをコンパイルすると、
    C:\Users\ユーザ名\AppData\Local\Temp\

     arduino_build_*****
    が作成され、そこの スケッチ名.ino.elf を
    \hardware\tools\avr\binにあるavr-objdump.exeを使って
    コマンドプロンプトで

    avr-objdump -S -h -t -r スケッチ名.ino.elf>スケッチ名.txt

    を実行することで、
     コンパイル結果を機械語(アセンブラ)で表示すること
    ができました。

    スケッチ内の変数名や関数名は完全に失われているので、ソースと翻訳結果の対応づけは面倒でした。

      補足日時:2017/09/22 07:41

A 回答 (3件)

>ArduinoアセンブラでLチカ


http://qiita.com/TakeoChan/items/8362eaf53cf1992 …

>【Arduino】アセンブラ入門 その1
http://nn-hokuson.hatenablog.com/entry/2017/09/1 …

>arduinoの逆アセンブラーリスト
http://blog.goo.ne.jp/cookchant/e/2e7d037ebaea8f …

 こういう感じらしいです。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にさせていただきます。

お礼日時:2017/09/21 18:56

リンカはlssという拡張子の、ソースとアセンブラを交互に示したようなファイルも出力できます。


Arduinoは徹底的ににそういう情報をユーザーに見せないようにしているはなぜなんだろうと思います。
あくまで気軽に使えるオモチャであり、デバッグなんて専門的なことはさせないという強固な意志を感じますね。
    • good
    • 0
この回答へのお礼

追加の回答ありがとうございます。
>Arduinoは徹底的ににそういう情報をユーザーに見せないようにしているはなぜなんだろうと思います。
同感です。
Arduinoは8ビットマシンなので、メモリ空間が小さく、
ちょっとしたループ、たとえば
for(i=0; i<100; i++) の 変数i は、8bit で十分なので、
int は8ビットの方がふさわしいと思っていたのですが、コンパイル結果からすると16ビットで扱っていましたね。

>あくまで気軽に使えるオモチャであり、デバッグなんて専門的なことはさせないという強固な意志を感じますね。
なるほど、そのように理解するのですね。参考になります。
「動きゃいい」のではなく、「美しいコードで動いてほしい」と思う美意識の自己満足派には辛い仕様ということですね。

今回のコンパイル結果から、
 char か byte で変数宣言しないと、非効率な美しくないコードになってしまう
こと、確認しました。

お礼日時:2017/09/24 09:18

変に苦労するよりAtmel Studio7にスケッチを取りこめば、吐き出したアセンブラリストが見れたりシミュレーションできたりデバッグ出来たり、いろいろ便利で快適だと思います。

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Atmel Studio7ですね。

#インストーラーダウンロートしました。 880MBでか!
チラ見するだけにしては本格的ですね。
ありがとうございます。

お礼日時:2017/09/21 18:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報