ghidraで、BIOSなどのバイナリファイルを解析する段階までをメモとして書いておきます。
New Project -> Non-Shared Project -> Project Nameを入力します。
解析したいバイナリファイルをインポートします。
SORD M68MXは、mc68000マシンですから、Languageは上図のようになります。Coldfireでなくデフォルトを選ぶと、68040になってしまうので、素のmc68000としてはColdfireを選択するしかないかと思います。
OKを押す前に、Optionボタンを押して、ROMの情報を入れます。ベースアドレスは必須です。
読み込みが終わったら、バイナリファイルをダブルクリックします。ヒドラのアイコンをダブルクリックすると何もない画面が開いてしまいます。必ずファイルをダブルクリックして下さい。
コードが表示されると、上図のように解析するか聞いてくるので解析します。
解析するでYesを選択すると、解析オプションを聞いてきます。細かいオプションの効用は分かりませんが、Prototypeオプションは付けても付けなくてもあまり変わりなかったです。ちなみに、Prototypeオプションを付けると解析時間は伸びます。
コードが読み込まれたら、WindowメニューからMemory Mapを選択します。+ボタンを押して、RAM領域を定義します。M68MXの場合は下図のようになると思います。よくわからないままExecute、Initializedにしています。
下図のようなメモリマップになりました。本当はROMの後ろのアドレスにはデバイスがぶら下がっているので、それも加えると良いかもしれません。
これで逆アセンブルする準備が整いました。mc68000は先頭にリセットベクタがあります。
M68MXでは、0xe00008なのでそこで、逆アセンブルします。右クリックして、dissasembleです。これでドカッと逆アセンブルされます。
メモリマップを作っておくと下図のように、BIOSが行ったメモリアクセスの記録を表示してくれるというメリットがあります。アクセス元のアドレスの後ろにあるWとRはアクセスの形式で、各々書き込みと読み出しを意味します。
ROMの後方に配置されているデバイスも含めて24MBすべてメモリマップにしておくと、デバイスへのアクセス方法(書き込みか読み込みか)で、レジスタのタイプが分かることがあります。下図では、書き込みだけをしているのでコントロールレジスタの可能性があります。
ここまでくれば、先頭から読んでいくだけです。