« 童心に返る #4 Ichigoboy ゲーム開発 | トップページ | Ichigojam マシン語で LED ピカピカ »

逆アセンブラ for Ichigojam

 久しぶりにwinアプリ作りました!

ダウンロード - disasm_for_ichigojam.zip

 zip ファイルを展開すると小さな exe ファイルが一つ出てきます。実行すると、発行元不明とか言われて止められますがわかる方はそのまま実行してみてください。このブログがハッカーに侵されない限り安全だと思います。念のためにセキュリティスキャンしてみてください。実行が確認できたのは、win10 Home edition のみです。開発ツールは VS2015 express です。

 実行すると以下のようなウィンドウが出てきます。各所の説明をします。

  • 開始番地…ここに16進数で先頭番地を入力しておくと、マシン語変換の際に「番地」にアドレスが表示されます
  • 番地…アドレスを自動生成した結果を表示します
  • マシン語…テキスト入力で、各種マシン語表記を入力します
  • ニーモニック…逆アセンブラの出力結果を表示します

「ファイル」メニュー

  • 終了 … プログラムを終了します
  • 印刷、印刷プレビュー … 開発中

「解析」メニュー

  • カンマ区切り10進数 … マシン語の枠に記入された「254,181, ... 」といった8ビットずつカンマ区切りされた10進数を16ビット16進数に変換します
  • カンマ区切り2進数 … マシン語の枠に記入された「`00000001,`00110000, ... 」といった、8ビットずつカンマ区切りされた2進数を16ビット16進数に変換します
  • 16ビット2進数 … マシン語の枠に記入された「`0000000100110000 …」といった改行で区切られた16ビット2進数を16ビット16進数に変換します
  • 逆アセンブル … マシン語の枠に記入された改行区切りの16ビット16進数を逆アセンブルし、結果をニーモニックの枠に出力します

「ヘルプ」メニュー

  • バージョン情報 … 現在使用しているツールのバージョンを示します。印刷、印刷プレビューが実装できた段階で ver 1.0.0 とするつもりです。

 という説明から使用方法がわかると思いますが、順を追って説明します。

1. マシン語コードの準備 … カンマ区切り2進数のマシン語を例にとって用意します。エディタなどで、「POKE #700」の文字列を取り除いてマシン語データ部分のみ残します(元のコードは Ichigojam 開発者の福野さんのページからお借りしました)。

20190810_02_bin_array

2. マシン語の枠へのマシン語データの貼り付け … 作ったカンマ区切りデータを「マシン語」の枠に貼り付けます。ここで、開始番地にデフォルト値#700を変更することもできます。

20190810_03_paste_bin

3. マシン語変換 … 「解析」→「カンマ区切り2進数」をクリックして4ケタの16進数に変換するコマンドをメニューから選びます。

20190810_04_convert_bin

4. マシン語変換結果 … 上記3. のコマンドを実行すると以下のような画面になります。4ケタの16進数に変換できなかったものは空行になります。

20190810_05_convert_result 

5. 逆アセンブル実行 … 「解析」→「逆アセンブル実行」をクリックします

20190810_06_disassemble_cmd

6. 逆アセンブル実行結果 … 上記5. のコマンドを実行すると以下のように、ニーモニックの枠に逆アセンブル結果が出力されます。

20190810_07_disassemble_result

 ここからは注意書きになりますが、基本的に自分のために作ったツールですのでいろいろと不備があります。くれぐれも objdump とかと比較したりしないでください。

  • 逆アセンブルできる命令は Cortex-M0 Arm マシン語表(asm15, 抜粋) に書いてあるものから有用なものだけ取り出して対応しています。
  • つまり、asm15 が吸えるニーモニックを部分的に解釈できるようにしたものです。
  • goto 文の分岐先はマシン語コードに対して2を足しています。したがって飛び先は命令個数分だけ数えれば済みます。
  • 改行文字はCRLFのみ対応しています。そのほかは動作確認しておりません。
  • 印刷機能は最終的に削除するかもしれません。自分の勉強用の課題ということにしておきます。

« 童心に返る #4 Ichigoboy ゲーム開発 | トップページ | Ichigojam マシン語で LED ピカピカ »

電子回路工作」カテゴリの記事

コメント

この記事へのコメントは終了しました。

2022年3月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
無料ブログはココログ