全然WebGLと関係ないのですけれど、最近ちょっとした事情で夜な夜なとあるファミコンのゲームのコードを読んでました(スペランカーではないです)。NES 回りとかさすがにもう枯れきってるはずなんですが、エミュはどれも完成度高いし最近は JavaScript 版なんかも使えるんですけど、逆アセンブラってあんまりいいのがないんですよね。もっとあったけどなくなってしまったのかもしれません。しかもたまたま使ったやつが微妙にバグっててちょっと悲しい思いをしました。
JavaScript 版の逆アセンブラもすでにいくつかあるんですが、どちらかというとエミュ指向だったりして、今の自分のようにただソースを読みたいという場合にはあんまり向いていません。というわけで、3時間くらいかかりましたが作ってみました。
NES Disassembler JavaScript 版
HTML5...といっても FileAPI 使ってるだけですけど、ほんとこういうツールはもうブラウザでいいな、って感じがします。
ちなみにこの逆アセンブラはどの辺がいいのかというと、
- 2パス(以上)なのでラベルを解決する
- 割り込みベクタからPC到達範囲を調べるので、データセクションを分離できる
- その上ジャンプテーブルを使った間接ジャンプ先も結構追いかけてコードセクションを識別する
- NES の IO アクセスをコメントで出してくれる
あくまでエミュにせずにちゃんと解析していろいろする、というあたりに強いこだわりが感じられます(意味不明)
それではまた。

コメント