石原 博の覚書

電子工作に関する日々の覚書を記載します

cdp1802 disassembler

2022-07-17 19:36:34 | 日記

SBC1802でDiskless Elf/OSを動かしたことは前回紹介したが、その際に作ったディスアセンブラ

前回紹介のとおりSBC1802のハードを修正したが動かずソフトを疑った。しかしcdp1802のディスアセンブラはなかなか手頃なものがない。そこで逆アセンブラをrubyで書いてみた。せっかく高級言語で作るのであればということで、cursesを使い必要部分だけ逆アセンブル出来ること。ラベルやコメントをつけられるようにした。(実際にはハードの問題でソフトは関係なかったが)

せっかく作ったので、i8080の逆アセンブル機能もつけgithubに登録している。

https://github.com/ishihara-h/idis

- - - - - - - - - - - - - - - - - - - - - - -

インタラクティブに動作するディスアセンブラ

バイナリあるいはインテルhexフォーマットのファイルをディスアセンブルする
cursesを使用し、必要部分のみをディスアセンブルすることが出来、
インタラクティブにラベル、コメントを付加することが可能
付加された情報は別ファイルに保存することが出来る。

起動方法
ruby idis.rb [target_file]

コマンド
j または DOWNキー     1行下へ
k または UPキー       1行上へ
スペース              1ページ分進める
c-] または RIGHTキー  オペランドが示すアドレスへ移動
c-t または LEFTキー  c]で移動した元のアドレスへ
o                     入力したアドレス分のオフセットを設定
                      (例えばCP/MのCOMファイルでは0100のオフセットをつける必要あり)
:                     入力したアドレスへ移動
l                     現在行へラベルをつける
;                     現在行へコメントをつける
q                     終了
b                     入力した数分DB定義。zを入力で0終端文字列、dを入力で0d終端文字列を定義
w                     入力した数分DW定義
e                     入力したファイルを対象とする
W                     付加情報(ラベル、コメント、オフセット等)を保存する(ファイル名.cfg)
S                     逆アセンブル結果をファイルに書き出す(ファイル名.asm)

注意点
・idis.rb内のrequireを書き換えることで、ターゲットを切り替える。
  require "./cdp1802.rb"でCOSMACに対応し、require "./i8080.rb"で8080に対応する
・インテルhexフォーマットは必要最小限しか理解しない
・Windowsでは「Curses.ESCDELAY=」でエラーが発生するが、
 コメントアウトすれば動作可能. ただしWindowのリサイズに対応出来ない

 



最新の画像もっと見る

コメントを投稿