Z80逆アセンブラ hoja
2017.1.12更新
hojaはただのZ80逆アセンブラではなくラベルを付けることができます。
出力したファイルはアセンブラでアセンブルすることができるという高機能なアセンブラです。
MSX版はメモリの逆アセンブルもできスロットの指定もできるのでBIOSの解析もできます。
そして数多くのOSに移植された逆アセンブラでもあります。
MSX版は少なくとも1992年には一般公開されていたという歴史の長い逆アセンブラです。
対応プラットフォーム
- MSX-DOS (hoja for MSX)
- CP/M (hoja for MSX。MSX以外の機種可。8080のCPUの機種可。)
- MS-DOS
- Windows
- UNIX (要コンパイル。C言語ソース)
- Mac OS
- Java (Javaに対応した各種OSで動作)
- .NET (.NETに対応した各種OSで動作)
Z80逆アセンブラ hoja for MSX Ver 1.51
MSX-DOS、CP/M版です。
半角カタカナ対応の機種である必要があります。
当初「ほおじゃあ」とも名乗っていました。
アップロードしていたパソコン通信がなくなり、収録されていた「MSXフリーソフトウェア100選」が販売されなくなり私も紛失したままだったので入手困難になっていました。
MSX関連のサイトに転載されていたのを見つけて再び私のほうでも配布することにしました。
無料、フリーソフト、再配布可能、商用利用可能です。
ライセンスは2-clause BSD license。(2017年1月12日に変更)
ソースファイル紛失してこの世に存在しません。
開発環境はBDS Cです。
hoja for MSX Ver 1.51(CP/Mも可)をダウンロード
バイナリは1993年2月の物です。
2017年にドキュメントを多少変え圧縮形式をLZHからzipに変えて再アップロードしました。
長い間FSW倉庫(一般)に保管されていました。
保存してくれてありがとうございます。
その他、MS-DOS、Windows、UNIX、Mac OS、Java、.NETに移植したものがあります。
それについてはまた後で書きます。
CP/Mで使うには
hoja for MSXを使います。
逆アセンブル時には -c オプションを付けてください。
hoja ファイル名 -c
のように打ちます。
残念なバグ
付くはずのラベルが付かないことがあります。
その結果、余分なラベルが左端に書かれてしまいます。
(きちんとそのラベルを呼び出してくれれば余分ではない)
余分なラベルがあってもそのソースをアセンブルした場合正しいものができるのではないかと思っています。
直せばいいんですが、需要があるのかないのか疑問なこともあって放置中です。
気が向いたら直すかも知れません。
アブソリュートアセンブラでないとだめ
リンカを経由して複数のファイルを合体(リンク)してプログラムを生成するアセンブラをリロケータブルアセンブラと言います。
MicrosfoftのM80、L80は、リロケータブルアセンブラとリンカになります。
アブソリュートアセンブラはリンクするまで絶対番地は決まっていません。
その対称に絶対番地をアセンブルするアセンブラをアブソリュートアセンブラと言います。
M80などのリロケータブルアセンブラは生成したプログラムの先頭に後でジャンプ先を追加できるようにNOPを三つ挿入します。
ソースに書いてないのに関わらずです。
(NOPとはZ80の命令のひとつで何もしないが1命令文の時間が経つという命令です。)
その結果、hojaで逆アセンブルしたリストをリロケータブルアセンブラでアセンブルすると番地が3バイトずれるために番地の整合が取れないプログラムが生成されて、元のバイナリと一致しません。
それを起動してもおそらく暴走するでしょう。
hojaで逆アセンブルしたリストをアセンブルするには先頭に3バイトのNOPを挿入しないアブソリュートアセンブラを使ってください。
もちろん、ソース全体を見て番地がずれても問題なく動くことが確認できればリロケータブルアセンブラでも構いません。
アブソリュートアセンブラにどんなものがあるかですが、もう昔のことすぎて忘れました。
MSX (パソコン)
あーすブラウザ
オンライン鍋田辞書
鍋田辞書トップ