keywords:
MITSUBISHI MELPS7700 M37700 M37780 M37781 dissassembler.

MELPS7700 逆アセンブラ

Copyright(C)1996-2008 By H.Kashima
goto ENGLISH page
ec2-54-204-122-57.compute-1.amazonaws.com , 32299th 2008/09/18 UPDATED

DOWNLOAD d77v11w32.zip(WIN32版)

  1. はじめに
  2. あるユニットの解析をしようと思ったのですが、自分で作る羽目になるとは.... でも、おかげで MELPS7700の勉強になりました。 (^^)



  3. MELPS7700について
  4. MELPS7700シリーズはプロセッサーのステータスビットによって扱うデータの長さ(8bit/16bit)が可変します。 データー長ステータスビットにはインデクスレジスタ長を決めるXフラグとデータ長を決めるMフラグの2つがあります。

    フラグはそれぞれ0の時16ビット長, 1の時は8ビット長になります。

    Mフラグの方は状態によって命令長が可変するので、逆アセンブルする際にはMフラグの状態を正しくチェックして命令を正しくデコードしなければなりません。

    X、Mフラグの完全な追尾をするにはCPUエミュレーターを実現しなければならなくなるので、逆アセンブラである dasm77.exeには簡易トレース機能をつけました。


    ※8ビット長のマップテーブルなどをアクセスするプログラムでは、随時フラグが変化するので、簡易トレースがあるだけでも充分解析が楽になります。



  5. 出力書式について
  6. 三菱のマニュアルに書いてある書式はいまひとつ見にくいので、独自に書式を設定しました。

    	アドレッシングモード		逆アセンブル例
        ------------------------------------------------------------------
    	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		プロセッサステータスレジスタ
    


  7. 簡易トレース(試用版を除く)
  8. 簡易トレースは、Xフラグ、Mフラグの変化を簡易的にシュミレートする機能です。アドレス順に逆アセンブルして行き、 sem, clm, sep, clp のフラグ操作系オペコードに出くわしたら自動的に逆アセンブラーの状態を変更します。

    なお、下記のようなパターンの分岐をするプログラムは正しくトレースできません。

    		clm
    		cmp	ax, #0x1234
    		bcc	pass1
    		sem
    		rts
    	pass1:	lda	#0x3456
    		sem
    		rts
    
    プログラムでは bccの次の行でMがセットされリターンするが、簡易トレースはそのMがセットされたまま pass1以降を逆アセンブルしてしまう。 本来 pass1へは bccから分岐するので、Mはリセットされていなければならない。



  9. 使用方法
  10. インタラクティブモードと標準出力モードがあり、ファイルを一括して逆アセンブルする場合は標準出力モードが有効であり、ファイルをちらっと覗きたいだけならインタラクティブモードが簡単で良いでしょう。

    先の簡易トレースの項のようなプログラムや途中にデータが配置してあるプログラムの場合は所々逆アセンブルできない部分がでてくるので、完璧に逆アセンブルをするつもりならば、標準出力モードで一端ファイルに落として、それからじっくりアセンブラを読みながら逆アセンブルできなかった部分を編集して行くという方法を取ることになるでしょう。

    標準出力モード:

    dasm77 入力FILE名 開始addr(hex) 終了addr(hex) Xフラグ Mフラグ
        C> dasm77 rom.bin 8000 8fff 0 1
        

    インタラクティブモード:

    dasm77 入力FILE名
        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			終了
    


  11. 機能制限
  12. 試用版では簡易トレース機能と、32キロバイト以上のファイルを扱う事ができません。 制限を解除するには、シェアウェア料金をお支払いいただき、解除キーワードを入手して下さい。



  13. プログラムについて
  14. このプログラムはシェアウェアですので、継続的に利用される場合は、料金 3,000円をお支払い下さい。 料金を支払って下さった方には機能制限の解除キーワードをお教えいたします。

    支払方法:
    1. VECTORシェアレジ

      三菱 MELPS7700シリーズ用 逆アセンブラ(SR001383)


    2. 銀行振込(メールにて連絡のこと)

      UFJ銀行 秋葉原支店
      (普)3917964
      カシマ ヒトシ



  15. 著作権
  16.   著作権は作者である 加島 倫が保有します。 また、このソフトウェアはシェアウェアであり、フリーウェアやPDSではありません。



  17. 免責
  18.   著作者は、このソフトウェアに関して一切の保証をいたしません。(バグなどの不良は、できる限り修復する努力をします) また、このソフトウェアを使用したことによる、いかなる損害について一切の責任を負いません。



  19. 参考文献
  20. 7700ファミリ ソフトウェアマニュアル/三菱



E-mail [注意]不適正な題名は即座ゴミ箱、名前を名乗らぬ者への返事はしない事があります。フリー系メールからは自動的に拒絶する場合があります。
-- LINK FREE --
 
HOME LAST