2013年5月5日日曜日

ARM Cortex-M3のアセンブラ学習に最適なインストラクションを簡単に調べるツールを超適当に作ってみた

何それ?

ARM Cortex-M3のCソースコードから注釈付きアセンブラリストを得るスクリプトです。

先日の投稿で「誰得OS」を作る事を考え、インターフェースの設計を行いました。
このOSのターゲットとしてARM Cortex-M3を最初に選択しました。
ARM Cortex-M3のアセンブラを記述するのは初めてなので、カーネル内部コードを記述する際に役立つであろうインストラクションを簡単に調べるツールを超適当に作ってみた次第です。


このツールのフローは以下のようになっています。
  1. ソースコードをC言語で記述する
  2. ソースコードをコンパイルしてオブジェクトファイルにする
  3. オブジェクトファイルを逆アセンブルしてインストラクションリストにする
  4. インストラクションリストを走査して注釈を付ける
このツールで最終的に得られる出力は逆アセンブルされた命令に注釈が付いたテキストです。


上記のように、逆アセンブル結果から対応するインストラクションを列挙してくれます。
わざわざ辞書のようにインストラクションセットを引く必要もありません。

アセンブラを記述する場合、単純な「やりたい事」と「インストラクション」を繋げていく作業が大半を占めます。予めC言語で書いたソースをコンパイルし、それを逆アセンブルした結果をインストラクションセットと一緒に眺めれば学習効果が高まるだろうと考えたわけです。

ダウンロード

ダウンロードはこちらからどうぞ。
自己責任でお使い下さい。

テスト用のサンプルCソースとMakefile付き。
実行後の結果も一緒にまとめてあります。

実行したい場合、単にmakeと打つだけです。
地味ながらこれは便利。