6502の逆アセンブラを制作する過程の紹介の続きです
W65C816ボード |
制作過程(6)--- pass2
pass2では再びデータの先頭から1文字ずつ読みながらアセンブルリストを作成し、ListリストとAssembleリストボックスに書き込んでいきます。その書式は次のようです。
Listリストボックスには
行番号 アドレス オペコード オペランド ラベル ニーモニック オペランド
Assembleリストボックスには
ラベル ニーモニック オペランド (アセンブラプログラムにかけられる形式です。)
そのアドレスにラベルがついている場合はラベルも表示し、オペランドがアドレスである場合は即値をラベルに置き換えて表示します。
該当する命令がない場合はオペコードを ?-xx- のように表示し、ニーモニック欄はそのアスキーコードを'a'のように表示します。
【ここまでの結果】 ... 06Coding-pass2
制作過程(7)
作成された逆アセンブルリストを保存します。
ListリストはLSTファイルとして、AssembleリストはASMファイルとして保存します。
【ここまでの結果】 ... 07Coding-savefile
制作過程(8)
最後に細部の見直しをして完成です。
【11月18日追加】下の2ファイルは適宜見直して差し替えることがあります。
【完成版】 ... 08Coding-complete
完成版の中の実行ファイルのみ ... 6502DAsmWin
最後に
10年ほど前に制作した6800用の逆アセンブラの制作過程をほとんど忘れてしまっていたので、それを復習するためもあって今回、6502の逆アセンブラの制作に取り組んでみました。
自分の場合は、ソースが公開されていてもあまりに長いとなかなか読み切れないことが多いので、いくつかに分割して紹介してみましたがどうだったでしょうか。
手持ちに6502のバイナリがないので十分に動作確認ができてはいないのですが、とりあえずelectrelicさんのUniversal Monitor 6502版が正常に逆アセンブルできることは確認してあります。
6502の命令コードの解釈やその他の誤り・勘違いなどがありましたらお知らせいただけるとありがたいです。
一週間に1回は訪問してますが今週は時間が空きました。御存知のように
返信削除6502のコードは十分に持ってますし同様な操作なら「6809DAsmWin」も
便利に使わってるので「6502DAsmWin」を使ってみます。直に慣れるか
否かは判りませんが楽しみです。お疲れ様でした。
コメントありがとうございます。
削除これで多少は6502の命令コードとアドレッシングモードについての知識が得られましたので、次はいよいよアセンブラの作成に取り組もうと思っていますが、他にもやりたいことがいくつかありますので、完成はいつになりますやら。