ec2-3-21-246-53.us-east-2.compute.amazonaws.com , 37716th | 2008/09/18 UPDATED |
フラグはそれぞれ0の時16ビット長, 1の時は8ビット長になります。
Mフラグの方は状態によって命令長が可変するので、逆アセンブルする際にはMフラグの状態を正しくチェックして命令を正しくデコードしなければなりません。
X、Mフラグの完全な追尾をするにはCPUエミュレーターを実現しなければならなくなるので、逆アセンブラである dasm77.exeには簡易トレース機能をつけました。
※8ビット長のマップテーブルなどをアクセスするプログラムでは、随時フラグが変化するので、簡易トレースがあるだけでも充分解析が楽になります。
アドレッシングモード 逆アセンブル例 ------------------------------------------------------------------ immediate lda al, #0x0000 direct lda al, dp + 0x10 direct bit seb #0x01, dp + 0x10 direct indexed X lda al, dp + 0x10 + ix direct indirect lda al, [dp + 0x10] direct indexed X indirect lda al, [dp + 0x10 + ix] direct indirect indexed Y lda al, [dp + 0x10] + iy absolute lda al, 0x1234 absolute indexed X lda al, 0x1234 + ix absolute long ldal al, 0x123456 absolute long indexed X ldal al, 0x123456 + ix absolute indirect jmp [0x1234] absolute direct long jmpl [0x1234] absolute indexed X indirect jmp [0x1234 + ix] direct bit relative bbs #0x5a, dp + 0x04, 0x1234 absolute bit relative bbs #0x5a, 0x1234, 0x4567 stackpointer relative lda al, sp + 0x02 stackpointer relative- indirect indexed Y lda al, [sp + 0x1e] + iy block transfer mvn 0x00:iy, 0x00:ix, ax
al, bl アキュームレータの8ビットアクセス ax, bx アキュームレータの16ビットアクセス ix, iy インデクスレジスタ ix8, iy8 インデクスレジスタの8ビットアクセス sp スタックポインタ dp ダイレクトページレジスタ pg プログラムバンクレジスタ dt データバンクレジスタ ps プロセッサステータスレジスタ
なお、下記のようなパターンの分岐をするプログラムは正しくトレースできません。
clm cmp ax, #0x1234 bcc pass1 sem rts pass1: lda #0x3456 sem rts
先の簡易トレースの項のようなプログラムや途中にデータが配置してあるプログラムの場合は所々逆アセンブルできない部分がでてくるので、完璧に逆アセンブルをするつもりならば、標準出力モードで一端ファイルに落として、それからじっくりアセンブラを読みながら逆アセンブルできなかった部分を編集して行くという方法を取ることになるでしょう。
C> dasm77 rom.bin 8000 8fff 0 1
C> dasm77 rom.bin MELPS7700 disasembler Version 1.0 Copyright(C)1996 By H.Kashima >コマンド一覧
u [start] [end] 逆アセンブル >u カレントアドレスから16行逆アセンブルする >u 8000 8000番地から16行逆アセンブルする >u 8000 8fff 8000から8fff番地までを逆アセンブルする d [start] [end] 16進ダンプ >d カレントアドレスから128バイトダンプする >d 8000 8000番地から128バイトダンプする >d 8000 8fff 8000から8fff番地までをダンプする x [value] Xフラグ操作 >x フラグの状態を表示する >x 0 フラグをクリアする >x 1 フラグをセットする m [value] Mフラグ操作 >m フラグの状態を表示する >m 0 フラグをクリアする >m 1 フラグをセットする q 終了
三菱 MELPS7700シリーズ用 逆アセンブラ(SR001383)
UFJ銀行 秋葉原支店
(普)3917964
カシマ ヒトシ
-- LINK FREE -- |
||
HOME | LAST |