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.

ChangeLog.txt 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
  1. 2010-05-25(火) Tachibana
  2. * dis version 3.16 として公開。
  3. * ドキュメント類修正、src/ports/ports.txt 新規作成。
  4. 2010-05-23(日) Tachibana
  5. * *.[ch]: 移植時にエラーや警告が出ないように調整。明示的なキャス
  6. トや #include <~.h> の追加など。
  7. * Makefile, fpconv.c: 従来は printf() が "%Lg"(long dobule) に対
  8. 応していれば HAVE_LDBL_DOPRNT を定義していたが、逆にして対応して
  9. いない場合に NO_PRINTF_LDBL を定義するようにした。
  10. 過去ログ見てたら
  11. > -DNO_LDBL_DOPRNT を -DHAVE_LDBL_DOPRNT に変更.
  12. なんてのがあった……。
  13. * labelfile.c (get_line): getline から名称変更。glibc に同名関数
  14. があるため。
  15. * labelfile.h (getline, COMMENT_CHAR, SYMBOL_TERMINATE_STRING):
  16. 宣言と定義を削除。
  17. * main.c (loadfile): サイズが 0~1 バイトで、拡張子が .r 以外の
  18. ファイルを指定した時にきちんとエラーに飛ぶようにした(従来は読み
  19. 込んでいないバッファを参照していたが、その後の読み込みでエラーに
  20. 飛ぶので結果的にはセーフ)。
  21. * (loadfile): open() の第3引数 S_IRUSR を削除(O_CREAT 時にだけ必
  22. 要な引数)。該当部分の OSKDIS 用コードを削除して統合。
  23. 2010-05-17(月) Tachibana
  24. * src/global.h: VOLATILE の定義を削除。
  25. * src/etc.[ch] (err): 上記変更に対応。代わりに __attribute__
  26. ((noreturn)) を追加。
  27. * src/table.c (read_tablefile): コメント行の記号に「;」を追加。
  28. 2010-05-16(日) Tachibana
  29. * src/estruct.h (xheader, os9header): コンパイル環境によっては構
  30. 造体に余計なパディングが入ってしまい、正しく読み取れない不具合を
  31. 修正(gcc 拡張機能を使用)。
  32. * (zheader): main.c から移動。
  33. * (ctimez): ctime() がエラー(NULL)になった時に不正なアドレスに書
  34. き込んでいたのを修正し、"(invalid time)" を返すようにした。
  35. PD libc では常に有効なアドレスが返るが、規格上はエラー時に NULL
  36. が返る。コンパイル環境によっては不正なタイムスタンプの場合などに
  37. 問題となる。
  38. * src/include.c (search_and_readfile): dis_inc と include を初期
  39. 化しないまま参照することがある不具合を修正。
  40. * src/main.c: QUICK_YES_NO 定義時のみ getch() を宣言するようにし
  41. た。また __HUMAN68K__ 定義時に conio.h、未定義なら curses.h を読
  42. み込むようにした(従来は __FreeBSD__ 定義時に curses.h)。
  43. * (print_title): Cygwin/MinGW/Linux 対応。処理が長くなってきたの
  44. で OSKDIS の表示形式を調整。
  45. * src/option.c (usage): ヘルプを標準エラー出力ではなく標準出力に
  46. 表示するようにした。
  47. * etc.h: __mc68000__ 定義時に __BIG_ENDIAN__ を定義するようにし
  48. た。以後は __BIG_ENDIAN__ の有無だけを見る。ほとんどの環境で
  49. Makefile でエンディアンを定義する必要がなくなったはず。
  50. * etc.h (peekw, peekl), main.c (loadfile): 上記変更に対応。
  51. 2006-03-18(土) Tachibana Eriko <eririn@spica.freemail.ne.jp>
  52. * dis version 3.15 として公開。
  53. 2006-03-15(水) Tachibana Eriko <eririn@spica.freemail.ne.jp>
  54. * src/disasm.c (op04): -m680x0 指定時に link.w 命令を逆アセンブ
  55. ルすると、68000 命令なのに .cpu 68020 が出力されてしまう不具合を
  56. 修正。
  57. * README.DOC: ドキュメント修正。
  58. 2000-05-18(木) Tachibana Eriko <eririn@spica.freemail.ne.jp>
  59. * dis version 3.14 released.
  60. * analyze.c (analyze): 一昨日の変更が期待通りに動作していなかっ
  61. たのを修正.
  62. * disasm.c (op0f): fbra が条件分岐として扱われていた不具合を修正
  63. (BCCOP から JMPOP に変更).
  64. 2000-05-16(火) Tachibana Eriko <eririn@spica.freemail.ne.jp>
  65. * analyze.c (analyze): JMPOP/JSROP でメモリ間接アドレッシングの
  66. ときは分岐先の解析を行わないようにした(JMPOP は絶対ショートも).
  67. 間接参照先のラベルを登録するようにした.
  68. * 上記変更によりプログラム領域の検索中にバスエラーが発生すること
  69. がある不具合を修正. ただし、対症療法なので、もしかしたらまだ発生
  70. することがあるかも知れない.
  71. * disasm.c (setEA): bd を省略すると (,d0.l) というように出力して
  72. しまう不具合を修正.
  73. version 3.13
  74. -a--rw- 114214 1999-09-01 00:04:32 dis.x
  75. その他:
  76. 環境変数 dis_header、dis_sxmac に空文字列が指定されていた場合は
  77. 無指定と見なすようにした.
  78. generate.c の MIN_BIT(x) のマクロ定義を (((x) ^ ((x) - 1)) & (x))
  79. から ((x) & -(x)) に変更.
  80. LIBC をぱっちその14に、bison を version 1.27 human68k-1.1 に変
  81. 更.
  82. version 3.12
  83. -a--rw- 114212 1999-04-25 04:05:32 dis.x
  84. 出力ファイル関係:
  85. "sr" が "ccr" になってしまう不具合を修正.
  86. version 3.11
  87. -a--rw- 114282 1999-01-03 01:35:18 dis.x
  88. オプション関係:
  89. -v --exclude-iocscall-mac でバスエラーになる不具合を修正.
  90. 出力ファイル関係:
  91. -M で IOCS コールに(moveq の)コメントが付く不具合を修正.
  92. version 3.10
  93. -a--rw- 114336 1998-12-23 03:02:24 dis.x
  94. 本日の目玉:
  95. FreeBSD 上で動作するようにした(リトルエンディアンも問題なし!!).
  96. オプション関係:
  97. --{in,ex}clude-fefunc-mac オプションを指定するとエラーになってい
  98. た不具合を修正.
  99. 入力ファイル関係:
  100. $dis_sxmac 読み込み時にメモリを破壊する不具合を修正.
  101. アドレス境界情報のシンボル(*filename*)を無視するようにした.
  102. 出力ファイル関係:
  103. -A によるコメントが cmpi.w 等に付かなかった不具合を修正.
  104. moveq.l にもコメントを付けるようにした.
  105. .data セクションがない場合に -S で正しくファイルが作成されなかっ
  106. た不具合を修正.
  107. -A で adda/suba を常に add/sub と表記するようにした. addq/subq
  108. への最適化を防止する為、必要ならサイズを付ける. addi/subi も演算
  109. 先がデータレジスタでなければ同様に処理する.
  110. -v -B で bra の後に空行が入らない不具合を修正.
  111. --exclude-xxx-mac 指定時にヘッダ部分に .include (null) と出力さ
  112. れてしまったので、何も出力しないようにした.
  113. 68030 の pmove、68040/68060 の plush や、MMU レジスタ bad0、bac0、
  114. mmusr を使用した命令が正しく出力できなくなっていた不具合を修正.
  115. その他細かい不具合を修正.
  116. -x で相対オフセットテーブルにもコメントを付けるようにした.
  117. FreeBSD 版では fstat() で出力先の同一検査を行うようにした.
  118. 解析関係:
  119. chk2 及び cmp2 のアドレッシングモードが全てとなっていたのを制御
  120. モードに修正.
  121. -m68000 の場合にも tst 命令で 68020 以降で拡張されたアドレッシン
  122. グを受け付けていた不具合を修正.
  123. その他:
  124. いろいろと高速化(したはず…).
  125. 不要になっていた stack.s を削除.
  126. Makefile.bsd を追加.
  127. version 3.00
  128. -a--rw- 116854 1998-10-17 00:38:08 dis.x
  129. オプション関係:
  130. --include-XXX-mac=<file> 及び --exclude-XXX-mac オプション追加.
  131. XXX は doscall、iocscall、fefunc のいずれか.
  132. --header=<file> オプション追加.
  133. -mcpu32 オプション追加.
  134. 出力ファイル関係:
  135. テーブル末尾のラベルが二重に出力される不具合を修正.
  136. 同一アドレスに対し複数のセクションにラベルが定義されていた場合に
  137. 最後のセクションに全て出力されていた不具合を修正.
  138. stack セクションの出力に対応(シンボルテーブルが存在する場合のみ).
  139. テーブル関係:
  140. テーブルの式に 0x から始まる 16 進数を記述できるようにした.
  141. 解析関係:
  142. 解析中にスタック溢れを監視してバスエラーが起きる前に強制終了する
  143. ようにした.
  144. CPU32 の命令セットに対応. ただし .cpu の切り換えは行わない.
  145. その他:
  146. ソースコードの大幅改修.
  147. ソースコードデバッガ情報は全く再現できなかった. この事をドキュメ
  148. ントに加筆.
  149. バージョンを 3.00 にして開発終了とする.
  150. version 2.85
  151. -a--rw- 118966 1998-07-17 22:50:38 dis.x
  152. オプション関係:
  153. -z オプション指定時にファイル形式エラーになる不具合を修正. また、
  154. アドレスの指定に $ や 0x を付けられるようにした(付けなくても 16
  155. 進数として扱いますが).
  156. サブルーチンコール命令の直後に引数を置くプログラムを解析する為の
  157. -G オプション作成.
  158. 出力ファイル関係:
  159. ファイルが存在していた場合、r(rename) でファイル名を変更出来るよ
  160. うにした.
  161. 二バイト半角文字の扱いを修正.
  162. 解析関係:
  163. テーブル終了アドレスのラベル属性が消えてしまう不具合を修正.
  164. その他:
  165. -o オプションの説明を修正(デフォルトは 60 で、バイト数ではなく桁
  166. 数だった).
  167. 実行ファイルの読み込みバッファを 16 バイト余分に確保するようにし
  168. た.
  169. ドキュメント修正.
  170. version 2.83
  171. -a--rw- 118402 1998-06-03 01:01:46 dis.x
  172. オプション関係:
  173. 外部定義シンボルの出力を指定する -s[num] オプション作成. -s2 な
  174. ら .xdef も使いシンボルテーブルをほぼ完全に再現する. 従来の -s
  175. オプションから機能が変わったので注意して下さい.
  176. -m68008 を -m68000 と等価に扱うようにした.
  177. 隠しオプション --x、--r、--z 作成.
  178. 入力ファイル関係:
  179. X/Z 形式実行ファイルを、先頭の 2 バイトの内容で判別するようにし
  180. た(従来は拡張子).
  181. シンボル関係の各種バッファを動的に確保するようにした. 定義数の上
  182. 限がなくなったので -s オプションを削除し、別の機能を割り当てた.
  183. シンボルが多すぎるとメモリを破壊する不具合を修正.
  184. 未定義のシンボル属性を警告するようにした.
  185. 出力ファイル関係:
  186. 定数の外部定義に -C、-Z オプションが効くようにした. -s2 指定時は
  187. 外部定義のラベルも .xref で出力するようにした.
  188. 拡張精度実数値を実数表記で出力する場合、もし正確に変換できなかっ
  189. たら内部表記で出力するようにした.
  190. 標準出力へ書き込む時は自動的に -q を指定するようにした.
  191. 解析関係:
  192. BSS 以降もアドレス依存データや 0x4e75(rts) を検索していた不具合
  193. を修正. BSS が細切れになるバグが直った筈.
  194. -j オプション指定時は、奇数アドレスへの分岐を正しい命令として認
  195. めるようにした(ただし分岐先はプログラムと見なさない).
  196. 末尾のラベルが削除されてしまい、不正なメモリを参照してソースコー
  197. ドを出力し続けてしまう不具合を修正.
  198. テーブル関係:
  199. 浮動小数点を出力する命令 .dc.s、.dc.d、.dc.x、.dc.p を新設. ただ
  200. しオペランド表現式は記述できず、pc の値を出力するのみ.
  201. byte、ascii、asciiz、lascii 以外の命令を BSS 内で使用できるよう
  202. にした(何に使うのか知らないけど…).
  203. 各種バッファを動的に確保するようにした(定義数の上限がなくなった).
  204. 定義が多すぎるとメモリを破壊する不具合を修正.
  205. ソースコード関係:
  206. -DNO_LDBL_DOPRNT を -DHAVE_LDBL_DOPRNT に変更.
  207. -DHAVE_STRTOX を追加.
  208. 他は多すぎるので省略.
  209. その他:
  210. 配布規定を GPL に準拠するようにした.
  211. README.DOC 修正. 今回の改良で残った不具合を仕様に変更.
  212. dis_option.1 修正. -s の解説を変更、-P 削除.
  213. tablefile.5 追加.
  214. version 2.82
  215. -a--rw- 116442 1998-05-14 21:09:40 dis.x
  216. 解析関係:
  217. -v オプションを指定するとバスエラーが発生する不具合を修正.
  218. ソースコード関係:
  219. eprintf() の返値を void から int に変更.
  220. version 2.81
  221. -a--rw- 117732 1998-03-22 06:11:46 dis.x
  222. オプション関係:
  223. -Y オプションを新設. 指定した場合は、最初にカレントディレクトリ
  224. からインクルードファイルを検索する.
  225. 入力ファイル関係:
  226. 識別子 READ_FEFUNC_H を定義してコンパイルすれば、fefunc.mac では
  227. なく fefunc.h を読み込むようにした.
  228. インクルードファイルに定義されたシンボル名によっては、認識されな
  229. いことがある不具合を修正.
  230. 出力ファイル関係:
  231. デバイスヘッダに参照されないラベルが出力される不具合を修正.
  232. その他:
  233. 識別子 QUICK_YES_NO を定義してコンパイルすれば、上書き確認を
  234. version 2.79 互換('y'のみで決定)になるようにした.
  235. ドキュメント修正.
  236. version 2.80
  237. -a--rw- 117758 1998-02-11 02:38:22 dis.x
  238. サポートの引き継ぎに伴ない、patchlevel ではなく version で管理す
  239. るようにした.
  240. 出力ファイル関係:
  241. ラベル/テーブルファイル名を省略した場合に、入力ファイル名から補
  242. 完するようになってしまっていたエンバグを修正.
  243. fpconv_[sdx]()で±0.0を特別扱いして最初に処理するようにした(これ
  244. により拡張精度で+0.0が内部表現で出力される不具合を修正).
  245. 拡張精度を内部表現で出力する閾値を大きくした.
  246. その他:
  247. タイトル行に作成年月日を表示するようにした.
  248. READMEを削除し、全体のマニュアルとしてREADME.DOCを書き下した.
  249. doscall.mac/iocscall.mac/fefunc.macも添付するようにした.
  250. ・備考
  251.  version 2.80 以降は version 2.79 をベースにしています. それ以前の
  252. version 2.78 patchlevel 1~5 のベースは version 2.78ですが、これは私が
  253. version 2.79 が存在していることを知らなかった為です.
  254.  version 2.78 patchlevel 1~5 は version 2.79 と version 2.80 のあいだ
  255. のあたりに位置します.
  256. version 2.78 patchlevel 5
  257. -a--rw- 117576 1997-11-29 00:08:30 dis.x
  258. 入力ファイル関係:
  259. インクルードファイルの疑似命令(equ/macro)が大文字だと認識出来な
  260. くなっていたエンバグを修正.
  261. 定義が一つもなかった場合のエラーメッセージがおかしかった不具合を
  262. 修正. 一つもなくてもエラー終了しないようにした.
  263. fefunc.dis/fefunc.hではなくfefunc.macを読み込むようにした.
  264. -u1が指定されていなければ$sx_macを読み込まないようにした.
  265. 出力ファイル関係:
  266. move16の絶対ロングアドレッシングに()が付かない不具合及び、--old-syntax
  267. を指定するとハングアップする不具合を修正.
  268. link命令のエリア長を16進数で出力するようにした.
  269. 解析関係:
  270. andi/ori/eori to ccrがワードサイズと見なされていた不具合を修正.
  271. その他:
  272. READMEに導入の項を加筆.
  273. dis_option.1に環境変数の項を加筆.
  274. 非LIBC環境でコマンドラインの出力が正しくない不具合を修正.
  275. err()は必ず終了コード1でエラー終了するようにし、引数から終了コー
  276. ドの指定を削除.
  277. *_mac_pathをchar []ではなくchar*に変更.
  278. ソースコード関係:
  279. いくつかの魔法の数字を#defineで定義するようにした.
  280. include.cを大幅に改変.
  281. MakefileのLDFLAGSをLIBFLAGSに変更し、LDFLAGS = -Wl,-xを設定.
  282. ほか若干の修正.
  283. version 2.78 patchlevel 4
  284. -a--rw- 118232 1997-11-13 03:07:00 dis.x
  285. オプション関係:
  286. 数値の指定がおかしくないか調べるようにした.
  287. -U指定時は-Xも自動的に指定されるようにした.
  288. シンボルバッファ数のデフォルトを2048に変更.
  289. --real/--inrealオプションを新設した. デフォルトは--real.
  290. --old-syntax/--new-syntaxオプションを新設した. アドレッシング
  291. 表記を旧形式/新形式で出力する. デフォルトは--new-syntax.
  292. -m680*0オプションに複数のMPUを指定できるようにした.
  293. -m680x0で対応している全てのMPUの同時指定となる.
  294. -m6888*、-m68851は-m680*0で打ち消されるようになったので注意.
  295. .dcbで出力する最小バイト数を指定するオプション-W numを作成.
  296. 入力ファイル関係:
  297. テーブルの記述でext.wa()などがエラーにならない不具合を修正.
  298. テーブルの記述でdc.bなどを.dc.bと記述しても受け付けるようにした.
  299. 実行ファイルの読み込み時にエラーチェックを行なうようにした.
  300. 出力ファイル関係:
  301. LIBC版でコマンドラインを内部変数_comlineから得るようにした.
  302. -v指定時に--spが無視される不具合を修正.
  303. -U指定時にSXCALLのコール名が大文字になってしまう不具合を修正.
  304. -r指定時に文字列の16進数コメントの文字が変更できなかった不具合を修正.
  305. OSK版で(d16,an)の出力が旧表記のままだった不具合を修正.
  306. quadサイズの即値が正しく出力できない不具合を修正.
  307. (d32.l,an,ix)のアドレッシングでbdがアドレス依存していなくてもラベル
  308. に置換されてしまう不具合を修正.
  309. 一部の未定義命令でオペランドがラベルに置換されてしまう不具合を修正.
  310. データブロックの出力中に-aのアドレス表示が更新されない不具合を修正.
  311. cpush/cinv命令でアドレスレジスタ番号が正しく出力されない不具合を修正.
  312. 「bra @f; .ds.b 126; @@:」のbraにはサイズを付けないようにした.
  313. サプレスされたアドレスレジスタは出力しないようにした.
  314. (0,an,ix)は(an,ix)として出力するようにした.
  315. $8000~$ffffの絶対ショートアドレッシングは(-d16)として出力するようにした.
  316. サイズ".w"は不要になったので削除.
  317. ラベルファイルを64ビット整数及び浮動小数点データに対応させた.
  318. 拡張精度/パックドデシマル型式浮動小数点の実数表記出力に対応.
  319. ただし完全ではない.
  320. 解析関係:
  321. 複数のMPU命令を同時に受け付けるマルチMPUモードに対応.
  322. 「-m68030,68040」などとして指定する.
  323. 浮動小数点命令のデフォルトサイズを.wから.xに修正.
  324. fmove/fmovem from/to fpcr命令のデフォルトサイズを.lに修正.
  325. PDBcc、FBcc、PBcc、TRAPcc、FTRAPcc、PTRAPccのサイズ出力/抑制が
  326. 指定通りに行われなかった不具合を修正.
  327. -m68020で movec cacrが逆アセンブル出来なくなっていた不具合を修正.
  328. -m68010でrtdが逆アセンブル出来ない不具合を修正.
  329. pmove crp,a0などを出力してしまう不具合を修正.
  330. pflush命令の即値のエラーチェック/出力が正しく行われていなかった
  331. 不具合を修正.
  332. 長い命令の先頭の一部だけが実行ファイルの末尾に存在した場合、
  333. ファイル末尾を超えてデータを読んでしまう不具合を修正.
  334. OSK版でも68020以降の新設命令を出力可能にした.
  335. ライブラリ関係:
  336. libbinioのリンクをやめ、LIBCに対するパッチで対処するようにした.
  337. これにより端末への出力はCRLF改行で、それ以外はLF改行で行われる.
  338. libioctlと同じように、dis自身は全く関与せずに実現してます:-)
  339. 同梱の実行ファイルは改造したlibgccをリンクしています.
  340. いくつかの不具合を修正しましたが、エンバグしているかも知れません.
  341. LIBC/libhdiを改造してlong double対応の_doprnt()を作成した.
  342. その他:
  343. テーブルファイル解析中に、alloca()で確保したメモリをfree()で解放
  344. しようとしていた不具合を修正.
  345. SXCALLのコール名ポインタ配列は必要な時だけ確保するようにした.
  346. ファイル名バッファを静的配列ではなくmalloc()で確保するようにした.
  347. メッセージ修正.
  348. ソースコード関係:
  349. 浮動小数点の変換を扱うfpconv.[ch]を作成.
  350. ヘッダファイルが#includeする順番に依存していたのを修正.
  351. int MPU_typeをmputypes MPU_typesに変更.
  352. main.c:short FPCP_ID[16]をdisasm.c:char FPUID_table[16]に変更.
  353. version 2.78 patchlevel 3
  354. -a--rw- 113162 1997-09-02 02:18:26 dis.x
  355. 出力ファイル関係:
  356. $dis_headerのファイルに'%'が含まれていた場合に正しく出力できなかった
  357. 不具合を修正.
  358. 定数シンボルの再現がおかしくなっていた不具合を修正.
  359. 浮動小数点のNaN、無限大が文字列として出力されてしまっていたので、内部
  360. 表現で出力するように修正.
  361. 実効アドレス表記(abs.[wl])を(abs).[wl]に修正.
  362. ビットフィールド命令のオペランドが出力されなくなっていた不具合を修正.
  363. -S指定時に付加する拡張子を小文字にした.
  364. シンボル名の多重定義に対応. これに伴いラベルファイルの形式を拡張.
  365. .dc.?はゼロサプレスせずに出力するように変更. ただし最小単位のデータ
  366. はサプレスされる.
  367. .dc.w及び.dc.lも.dcb.?に変換されるようにした.
  368. .dcb.? len,$00は.ds.? lenとして出力するようにした.
  369. 解析関係:
  370. -m68000指定時にビットフィールド命令が.w (an)と出力されるversion 2.78
  371. からの不具合を修正.
  372. 命令中のアドレス依存検査を正しく書き直した.
  373. ラベルファイルの出力より先にラベルチェックを行うように変更.
  374. 表示関係:
  375. "bindコマンド等"→"unbindコマンド等".
  376. バージョンから"(Eriko ver.)"を削除.
  377. オプション関係:
  378. -Sを指定すると-Tも指定されてしまっていた不具合を修正.
  379. -m68008を認識しないようにした.
  380. ソースコード関係:
  381. etc.cにLIBC互換のeprintf()を作成(LIBCがあるならLIBCのものを使用).
  382. 可変長引数を受け取る関数はstdarg.hを参照して正しく宣言するようにした.
  383. nearadrs()のバイナリサーチの条件式がおかしかったのを修正.
  384. なるべくsetDn()を使うようにした.
  385. 関数の定義を新しい形式に書き換えた.
  386. staticな関数はファイル先頭で定義してプロトタイプ宣言を削除した.
  387. 小さい関数、一度しか呼ばれない関数はinline関数にした.
  388. その他いろいろ.
  389. version 2.78 patchlevel 2
  390. -a--rw- 113046 1997-08-07 07:12:36 dis.x
  391. 68060対応:
  392. 未実装整数・浮動小数点命令をsoftware emulationとして認識します.
  393. 新設命令lpstop、plpar、plpawに対応.
  394. 新設制御レジスタbuscr、pcrに対応.
  395. 表示関係:
  396. Target MPU、MMU、FPCPの表示を変更した.
  397. オプション関係:
  398. 命令セットを変更するオプションを作成.
  399. -P num software emulation命令を有効にする.
  400. -R numと同じように指定する.
  401. +1 未実装浮動小数点命令を有効にする.
  402. +2 未実装整数命令を有効にする.
  403. デフォルトは3.
  404. --fpsp FPSP命令を有効にする(68040/68060).
  405. --no-fpsp 〃 無効にする.
  406. --isp ISP命令を有効にする(68060のみ).
  407. --no-isp 〃 無効にする.
  408. --no-fpu FPU命令を無効にする.
  409. (-m68030~68060では-m6888xを指定しなくても
  410. FPU命令が有効になってしまうので、その対策)
  411. --no-mmu MMU命令を無効にする.
  412. (-m68030~68060では-m68851を指定しなくても
  413. MMU命令が有効になってしまうので、その対策)
  414. --no-fpuと--no-mmuは-m680x0のあとに指定すること.
  415. それ以外は-Pと同じように使用可.
  416. --(no-)fpspと--(no-)ispはもう片方の設定は変更しない.
  417. 例)-P0 --fpspで浮動小数点命令のみ有効.
  418. # 68060専用のプログラムだがFPU/MMU命令は使ってないことが分っていて、
  419. # データ領域との判別をより正確にしたい場合などは -m68060 --no-fpu
  420. # --no-mmu と指定すればよい.
  421. 出力ファイル関係:
  422. 拡張精度及びパックドデシマル形式の即値が0サプレスされるバグを修正.
  423. FPU IDに1以外が指定された場合は.fpidを出力するようにした.
  424. 複数即値オペランドのfmovem.l #imm,#imm[,#imm],fpcrlistが正常に逆
  425. アセンブルできなかったのを修正.
  426. -U指定時に.include .cpu .fpid .equが大文字にならないのを修正.
  427. movepのディスプレースメントに".w"が付いていたが、これは不要なので
  428. 付かないようにした.
  429. ラベルファイルにシンボル名を追加すると、そのラベルが必ず外部定義に
  430. なってしまうのを修正.
  431. 一部の実効アドレス形式で--spが効かなくなっていたのを修正.
  432. 解析関係:
  433. 「データ領域の中からプログラム領域を捜しています(1).」や「ラベル
  434. チェック中.」で無限ループに陥る不都合を修正(AVL_delete()のバグ).
  435. シンボルテーブルやラベルファイルでシンボル名が無視されるようになって
  436. いた不都合を修正.
  437. -g指定時もシンボルテーブルを読み込むようにした.
  438. ワードサイズの再配置情報を通常のロングロードサイズと同等に扱うようにした.
  439. ソースコード関係:
  440. fprintf(stderr,...)をeprintf(...)に変更.
  441. fputc(c,stderr)をetc.cに作成したeputc(c)に変更.
  442. fputc()の第一引数をcharにcastしていたのをやめた.
  443. パーサジェネレータを自分で移植したGNU Bison version 1.25に変更.
  444. add_symbol()で行っていた定数シンボル登録の振り分けをmake_symtable()
  445. で行うようにした.
  446. ラベル行とオペランド中のラベルの生成ルーチンを独立させた.
  447. make_symbol()の第三引数(コロン付加モード)を削除.
  448. ライブラリ関係:
  449. avl.c: AVL_delete()で節を削除すると子が迷子になるバグを修正.
  450. option.c: XCの独自関数strbpl()を使わないようにした.
  451. version 2.78 patchlevel 1
  452. -a--rw- 118978 1997-06-29 00:50:46 dis.x
  453. 表示関係:
  454. Target FPCPの表示形式を若干変更した.
  455. Target MPU/FPCPの表示から'MC68***'の'MC'を削除した.
  456. -m68851、-m68030、-m68040指定時はTarget MMUとして表示するようにした.
  457. オプション関係:
  458. コマンドラインより先に環境変数dis_optを評価するようにした.
  459. これにより-Q削除(ただし互換性の為、指定されても無視する).
  460. -Cオプションの初期値を-C0から-C2に変更した.
  461. -mオプションの初期値を-m68030から-m68000に変更した.
  462. バージョンを表示するオプション--versionを作成した.
  463. 使用法を表示するオプション--helpを作成した.
  464. なお、-?はgetoptの仕様上エラーになる.
  465. 入力ファイル関係:
  466. X形式実行ファイルのヘッダ確認は、先頭2バイトが'HU'かどうかで
  467. 行うようにした(次の1バイトは予約領域、その次の1バイトはロードモード).
  468. 64バイト未満の不当なX形式実行ファイルがエラーにならないで異常な
  469. ソースを生成してしまう不都合を修正した.
  470. テキストデータとして読み込むファイル(label、table、include、headerの四種)
  471. は明示的にテキストモードでオプションするようにした.
  472. include fileのマクロ/定数名に':'が付いていても認識するように修正.
  473. 出力ファイル関係:
  474. -vオプションによる出力で"undefined inst."の後にゴミが付く不都合を修正した.
  475. .cpu疑似命令や定数の外部定義リストの直後の空行が二行になるように修正した.
  476. 残っていた旧アドレッシング表記を新表記に改めた.
  477. 単精度浮動小数点小数がラベルに変換されてしまう不都合を修正した.
  478. 浮動小数点小数の先頭に"0f"を付けるようにした.
  479. 上書き確認はfgets()で"yes"の入力を待つように変更した. それ以外の文字列が
  480. 入力された場合(空文字列も含む)は"no"とみなし中断する.
  481. libbioio.aをリンクした関係上、常にLF改行で出力されるようになった.
  482. 解析関係:
  483. 最初のシンボル登録時に不当なアドレスを参照する不都合を修正した.
  484. SCSIDRV.SYSに-dオプションを付けるとバスエラーになる不都合を修正した.
  485. 10進数テーブルが文字列";毀"にならないようにした. 但し.dc.lにはならない.
  486. -m68020 -m68851指定時に以下のMMU命令が逆アセンブル出来ない不都合を修正.
  487. レジスタtcを使用した命令
  488. pmove (d16,pc),mmureg
  489. ソースコード関係:
  490. avlライブラリを../avlから./avlに移動した.
  491. ソースファイルの改行コードをLFにし、TAB幅を8桁に変更した.
  492. option.cの不正なコメントを修正、analyze2.cのコメント中の"/*"を削除.
  493. labelchange()の返値は使用しないようになっていたのでvoid型にした.
  494. hex.hで宣言されている関数のプロトタイプがhex.cで定義されている実体と
  495. 違っていたのを修正.
  496. option.hから存在しないhelp()のプロトタイプを削除.
  497. ライブラリ関係:
  498. -DLIBCを不要にした.
  499. strncmpi()はlibcのstrnicmp()を使うように変更.
  500. libhdi.a、libhmem.a、libbinio.aをリンクするようにした.
  501. ────────────────────────────────────