cross platform X68000 disassembler (Human68k, Windows, Linux)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

404 lines
13 KiB

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ソースコードジェネレータ オプション一覧
────────────────────────────────────
-a[num] num 行ごとにアドレスをコメントで入れる
(num を省略すると5行ごと)
-b num 相対分岐命令のサイズの出力
(0:自動 1:常に省略 2:常に付ける)
相対分岐命令のオペコードにサイズを付けるかどうかを指定し
ます.
通常(-b0 指定時)は、ショートブランチで届く距離をワードブ
ランチ、またはワードブランチで届く距離をロングブランチし
ている場合にサイズを付けます.
なお、-b2 を指定しても fdbcc 命令には絶対にサイズが付き
ません(アセンブラの仕様によります).
-c ラベルチェックを行わない
命令の中を指すラベルを探さないようにします. 通常は指定す
る必要はありません. 指定した場合、正常なソースを出力でき
ない場合があります.
-d デバイスドライバの時に指定
デバイスヘッダの構造を認識します. デバイスドライバでなけ
れば指定しないで下さい.
-e[file] ラベルファイルの出力
ラベルファイルを出力します. ファイル名を省略した場合はソ
ースファイル名の拡張子を .lab に変更したファイル名で出力
します.
-f バイト操作命令の不定バイトのチェック($00 or $ff ?)をしな
通常は、バイトサイズの即値の上位バイトは通常 $00 か $ff
であるので、それ以外であったら未定義命令と見なします(値
が正なら$00、負なら$ffになります).
このオプションを指定した場合はそのチェックを行ないません.
指定した場合は再アセンブルしても同じコードにならない場合
があります.
-g[file] ラベルファイルを読み込む
ラベルファイルを読み込みます. ファイル名を省略した場合は
ソースファイル名の拡張子を .lab に変更したファイル名から
読み込みます.
-h データ領域中の$4e75(rts)の次のアドレスに注目する
データ領域中に$4e75(rts)を発見した場合、その次のアドレス
を何らかのラベル(大抵はプログラム)として認識します.
-i 分岐先で未定義命令があってもデータ領域と見なさない
通常は、未定義命令を含むサブルーチン(と思われるもの)に分
岐した場合は分岐元自体がデータ領域と見なします. このオプ
ションを指定すればそのチェックを行わずに無条件に命令と見
なします.
-j アドレスエラーが起こるであろう命令を未定義命令と見なさな
通常は実行時にアドレスエラーが起こるであろう命令は未定義
命令と見なしますが、このオプションを指定した場合はそのチ
ェックを行ないません.
-k 命令の中を指すラベルはないものと見なす
命令の中を示すラベルが見つかった場合、そこは命令ではなく
データと解釈します. 元々命令の中を指すラベルがなければソ
ースの質が良くなる場合がありますが、そのようなラベルがあ
れば逆に悪くなります.
-l プログラム領域が見つからなくなるまで何度も捜すことをしな
通常はデータ領域からプログラム領域を見つからなくなるまで
探しますが、このオプションを付けると一度しか探しません.
付ける必要はありません.
-m 680x0 逆アセンブル対象のMPUを指定(x=[0],1-4,6)
逆アセンブルする命令セットを選択します. -m68040~68060
指定時は内蔵コプロセッサ・MMU 命令も使用可能になります.
-m68000,68030 のように複数の MPU を指定すると、指定した
全ての MPU の命令セットが同時に使用可能になります. また、
-m680x0 を指定すると選択可能な全ての MPU の命令セットが
採用されます.
-m 68851 68851命令を有効にする(-m68020 指定時のみ有効)
外付けMMU命令を逆アセンブル可能にします.
このオプションは -m680*0 オプションによってクリアされる
ので、それより後に指定して下さい.
-m 6888x[,ID] 有効なFPCPとそのIDを指定(68881/68882 ID=[1],2-7)
-m68020~68030 を指定している場合に、外付けコプロセッサ
命令を逆アセンブル可能にします. -m68881 と -m68882の機能
は全く同じです.
IDの指定を省略した場合は1と見なされます.
-m68881 -m68882,2 のように複数のIDを指定することも出来ま
す.
このオプションは -m680*0 オプションによってクリアされる
ので、それより後に指定して下さい.
-n num 文字列として判定する最小の長さ. 0なら判定しない(初期値=3)
文字列として判定する最小のバイト数を指定します. 短い文字
列の判定に失敗する場合、または判定を行いたくない時に使用
します.
-o num 文字列領域の桁数(1≦num≦80 初期値=60)
文字列領域を出力する際の、ソースファイルの一行あたりの桁
数を指定します.
-p データ領域中のプログラム領域を判別しない
通常は、一度データ領域と判定した場所からプログラム領域が
なかったか調べますが、このオプションを指定するとそれをし
ません. 付ける必要はありません.
-q[num] メッセージを出力しない
([0]:通常 1:テーブルに関する情報も出力しない)
解析中/ファイル出力中のメッセージを表示しません. 指定す
ればその分処理が速くなります.
-r 文字列に16進数のコメントを付ける
-s[num] シンボルテーブルの出力([0]:しない 1:[通常] 2:全て)
外部定義シンボルを再現します. -s1 指定時は定数シンボルの
み、-s2 指定時はアドレス値も出力します.
-u[num] 未使用の A,F line trap を未定義命令と見なさない
(num=1 SX-Window 対応)
A line trap や doscall.mac 及び fefunc.mac などで定義さ
れなかった F line trap を未定義命令と見なさないようにし
ます.
-u1 指定時は環境変数 dis_sxmac に設定してある SX-Window
のファンクションコール定義ファイルを読み込み、DOSコール
等と同様のマクロ出力を行ないます.
-v 単なる逆アセンブルリストの出力
-w num データ領域の横バイト数(1≦num≦32 初期値=8)
データ領域を出力する際の、ソースファイルの一行あたりのバ
イト数を指定します.
-x 実際のオペコードを16進数のコメントで付ける
-y 全てのデータ領域をプログラム領域でないか確かめることをし
ない
通常は、一度解析した後サイズの分らないデータがプログラム
でないか解析します.
このオプションを指定すると、データの終わりがリターン命令・
分岐命令などである領域のみを解析します. プログラム領域を
データとして残すことが有りますが、逆にデータ領域をプログ
ラムにすることも無くなる可能性もあります.
-z base,exec 実行ファイルを base からのバイナリファイルとみなし、exec
から解析する
アドレスに依存したバイナリ形式の実行ファイルを解析します.
実行開始アドレスが分らない時は、ファイル先頭アドレスと同
じ値を指定してみて下さい.
-A cmpi, movea 等を cmp, move 等にする
ただし、演算先がデータレジスタの cmpi、ori、andi、subi、
addi、eori は "i" なしの命令とオブジェクトコードが異なる
ので、そのままで出力されます. また、addi と subi で即値
が 1 ~ 8 の場合、addq や subq に最適化されるのを防ぐ為、
即値にサイズが付きます.
-B bra の後でも改行する
通常は rts、rte、rtr、jmp、DOS _EXIT、_EXIT2、_KEEPPR、
SXCALL __TSExit(ExitToShell)の後に一行空行を入れますが、
このオプションを指定すると bra の後にも空行を入れます.
-C[num] ラベルの後のコロン
(0:付けない 1:全てに1つ [2]:通常 3:全てに2つ)
ラベル定義行に付けるコロンの数を指定します. 通常は内部定
義(static)のラベルには一個(':')、外部定義(extern)のラベ
ルには二個('::')付きます.
内部定義か外部定義かの区別は、実行ファイルのシンボルテー
ブルにラベル定義が出力されているかどうかです.
-D データセクション中にもプログラムを認める
データセクションに分岐するプログラムに対応します. そのよ
うなプログラムでは「pc が有効なセクションを外れた」と表
示されるので、このオプションを指定してみて下さい.
-E バイト操作命令の不定バイトの書き換えチェックをしない
通常は、不定バイトを書き換えるような命令は未定義命令と見
なしますが、このオプションを指定した場合はそのチェックを
行ないません.
-F dbra, fdbra を dbf, fdbf として出力する
-G サブルーチンコール命令の直後に引数を置くプログラムを解析
する.
-I 命令の中を差すラベルのアドレスを表示する
命令の中を指すラベルが現われた時に、その旨を表示します.
・「命令の中を差すラベル(X -> Y+?)」
アドレス X が命令の中を指していたため、Y+? に置き換えま
した.
・「命令の中を差すラベル(X) -> データ領域に変更しました
(Y-X)」
-k オプションの影響、またはアドレス X が不定バイトを指し
ていた為に Y から X までの領域をデータ領域に変更しました.
そこが本当はプログラム領域であった場合は -E オプションを
指定してみて下さい.
-K char char をコメントキャラクタとして用いる
-L char char をラベル名の先頭文字として用いる
実行ファイルのシンボルテーブルやラベルファイルでラベル名
が与えられなかったラベルは、'Lxxxxxx'(x は16進数値)とい
う形式でラベル名が生成されますが、先頭文字 'L' を任意の
文字に変更します.
-M cmpi, move, addi.b, subi.b #imm および pack, unpk にコメ
ントをつける
imm が表示可能な ASCII 文字の場合にコメントを出力します.
-N サイズがデフォルトなら付けない
-R num 未使用フィールドのチェック項目の指定
(ビット指定, 初期値=15)
+1 mulu.l, muls.l, ftst.x における未使用レジスタフィールド
+2 拡張アドレッシングでのサプレスされたレジスタフィールド
+4 サプレスされたインデックスレジスタに対するスケーリング
+8 サプレスされたインデックスレジスタに対するサイズ指定(.l)
-S[num] 出力ファイルを num KB ごとに分割する
(num を省略すると 64KB)
実行ファイルの約 num KB ごとにソースファイルを分割して出
力します. ソースファイルには以下のような拡張子が付加され
ます.
テキストセクション .000 .001 ~ .009 .00a ...
データセクション .dat
ブロックストレージセクション .bss
-T[file] テーブル記述ファイルを読み込む
テーブル記述ファイルを読み込みます. ファイル名を省略した
場合はソースファイル名の拡張子を .tab に変更したファイル
名から読み込みます.
-U ニーモニックを大文字で出力する
-V num バックトラックの原因の表示
(0:しない [1]:プログラム領域 2:全ての領域)
解析した領域がプログラムと認められなかった時に、その理由
とアドレスを表示します.
-W num 同一データを .dcb で出力する最小バイト数.
0なら圧縮しない(初期値=64)
データを .dc.? で出力する場合、全てのデータが同一の値で
あれば .dcb.? により圧縮して出力されますが、一定のサイズ
より小さい領域は例え同一値であっても圧縮されません. この
オプションでそのサイズの閾値を変更出来ます.
-X 16進数を大文字で出力する
-Y カレントディレクトリからも include ファイルを検索する
カレントディレクトリにあるインクルードファイルを優先して
読み込みます.
-Z[num] 16進数をゼロサプレスする([0]:通常 1:省略可能な'$'を省略)
--include-XXX-mac=file
include ファイルの指定(XXX = doscall,iocscall,fefunc)
標準の include ファイルの代わりに file を読み込みます.
--exclude-XXX-mac
include ファイルを読み込まない
include ファイルを読み込まず、ファンクションコールの逆ア
センブルも行わないようにします.
--header=file ヘッダファイルの指定(環境変数 dis_header より優先)
標準のヘッダの代わりに file の内容を出力します.
--(no-)fpsp 未実装浮動小数点命令を[有効](無効)にする
--(no-)isp 未実装整数命令を[有効](無効)にする
通常は、システムによってソフトウェアエミュレーションされ
ることが保証されている命令は実在する命令と見なされますが、
このオプションを指定した場合は未定義命令と見なします.
--no-fpu 内蔵FPU命令を無効にする(-m68040~68060の後に指定)
--no-mmu 内蔵MMU命令を無効にする(-m68030~68060の後に指定)
通常は -m680*0 オプションで指定した MPU によっては、自動
的に内蔵 FPU/MMU 命令が有効になります. これらのオプショ
ンを指定するとそれらの命令を対象命令セットから除外します.
逆アセンブルするファイルにそれらの命令が含まれていないと
分っている場合、このオプションを指定することで命令セット
を限定し、解析の手助けをすることが出来ます.
このオプションは -m680*0 オプションによってクリアされる
ので、それより後に指定して下さい.
--sp a7 レジスタを'sp'と表記する(標準では --a7)
オペランド中のレジスタ a7 の表記を sp に変更します.
movem 命令のレジスタリストに表われる a7 は変更されません.
--old-syntax アドレッシングを旧表記で出力する(標準では --new-syntax)
通常は 68020 以降で定められたアドレッシング表記で出力し
ますが、このオプションを指定した場合は 68000 の表記で出
力します. ただし、68020 以降でしか使用できないアドレッシ
ングでは常に新しい表記で出力します.
--(in)real 浮動小数点を[実数表記](内部表現)で出力する
命令のオペランドやデータとして浮動小数点を出力する場合の
表記を選択します. --real を指定すると「0f1.23e+10」といっ
た実数表記、 --inreal を指定すると「!4048f5c3」といった
内部表現で出力します.
非数や無限大、非正規化数、未使用ビットがセットされている
データの場合は実数表記が不可能なので常に内部表現で出力さ
れます.
標準状態では --real が指定されています.
--overwrite ファイルを無条件で上書きする
--version バージョンを表示する
--help 使用法を表示する
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ソースコードジェネレータ 環境変数一覧
────────────────────────────────────
dis_opt デフォルトのオプションを指定します. コマンドラインの指定
より先に解釈されますが、-m680*0 など上書き指定できるもの
を除き取り消すことは出来ません.
dis_include doscall.mac、iocscall.mac、fefunc.mac を検索するディレク
トリ名を設定します. dis_include で指定されたパスに存在し
なければ環境変数 include を見ます.
include 環境変数 dis_include で指定されたパスに各ファイルが存在
しなかった場合に検索するディレクトリ名を設定します.
include で指定されたパスにも存在しなければ dis.x はエラー
終了します.
dis_sxmac SX-Window 用のインクルードファイルのファイル名をフルパス
で設定しておけば、-u1 オプション指定時にそのファイルが読
み込まれます. この環境変数を設定しなければ -u1 を指定し
た時でもファイルが読み込まれないだけで、エラーにはなりま
せん.
dis_header 出力ファイルの先頭に出力される .include 部分を書いたファ
イルをフルパスで設定しておけば、そのファイルの内容を代わ
りに出力します.
────────────────────────────────────