更新日: 2023 年 7 月 10 日
更新履歴
説明
HAS060.X の添付ドキュメントです。
HISTORY.DOC
──────────────────────────────────── High-speed Assembler ─ 68060 対応版 HAS060.X version 3.09+91 < 更新履歴 > 2023/07/07 M.Kamada ──────────────────────────────────── ──────────────────────────────────── HAS060.X v3.09+01 96-10-31 [改造] HAS.X v3.09 を逆アセンブルして改造することで 68060 に対応した(+02 か ら +06 まで対応)。 ──────────────────────────────────── HAS060.X v3.09+02 [追加] ソースリストを利用して 68060 に対応。 ──────────────────────────────────── HAS060.X v3.09+03 [変更] .DCB/.DS などのオペランドの式に文字列を含んでいてもよいことにした。 ──────────────────────────────────── HAS060.X v3.09+04 [変更] ?? で始まるシンボルを外部定義にしない。 ──────────────────────────────────── HAS060.X v3.09+05 [変更] アセンブル対象の CPU のデフォルトを常に 68000 にする。 ──────────────────────────────────── HAS060.X v3.09+06 [変更] 環境変数 HAS をコマンドラインの手前に挿入する。 ──────────────────────────────────── HAS060.X v3.09+07 [追加] 非公開機能追加。 ──────────────────────────────────── HAS060.X v3.09+08 [追加] 68040/68060 でソフトウェアエミュレーションによって実行される命令で、ワ ーニング software emulation を出す。 ──────────────────────────────────── HAS060.X v3.09+09 [変更] 標準出力にメッセージを _PRINT ではなくて _FPUTS を使う。CTRL+S の使用 が制限されるが、行の内容を出すときに _PRINT が使われているので CTRL+S が 効かなくなることはない。 ──────────────────────────────────── HAS060.X v3.09+10 [修正] MOVE (d,OPC),(d,An) の OPC が単なる PC として解釈される不具合を修正 (v3.09 から)。 ──────────────────────────────────── HAS060.X v3.09+11 96-12-26 [追加] 数字ローカルラベルを 99 まで拡張。 ──────────────────────────────────── HAS060.X v3.09+12 97-01-30 [修正] DIVSL #255,D0:D0 が 5 バイトになる不具合を修正(v3.09 から,報告:根本さ ん)。 ──────────────────────────────────── HAS060.X v3.09+13 97-02-01 [修正] bdpc の最適化処理の不具合を修正(v3.09 から)。 ──────────────────────────────────── HAS060.X v3.09+14 97-02-02 [修正] FMOVE.xp #0,#0,#0,FPn が 68020/68030 でもワーニング software emulation が出る不具合を修正(+08 から)。 ──────────────────────────────────── HAS060.X v3.09+15 97-02-02 [追加] -c1 を追加。 ──────────────────────────────────── HAS060.X v3.09+16 97-02-27 [修正] 68060 で PTESTR/PTESTW がエラーにならない不具合を修正(+01 から)。 ──────────────────────────────────── HAS060.X v3.09+17 97-02-28 [修正] CHK #255,D0 が 3 バイトになる不具合を修正(v3.09 から,報告:たんぼさん)。 ──────────────────────────────────── HAS060.X v3.09+18 97-03-14 [追加] -1 を追加。 ──────────────────────────────────── HAS060.X v3.09+19 97-03-14 [修正] -1 を指定すると相対分岐命令が正常にアセンブルできなくなる不具合を修正 (+18 から)。 ──────────────────────────────────── HAS060.X v3.09+20 97-03-14 [修正] -1 を指定するとデスティネーションオペランドが正常にアセンブルできなく なる不具合を修正(+18 から)。 ──────────────────────────────────── HAS060.X v3.09+21 [修正] -1 を指定したときの CMPI と BTST の処理の不備を修正(+18 から)。 ──────────────────────────────────── HAS060.X v3.09+22 [修正] BTST Dn,#imm が 3 バイトになる不具合を修正(v3.09 から,報告:立花えりり んさん)。 ──────────────────────────────────── HAS060.X v3.09+23 [変更] terminator not found をエラーに格上げ (要望:立花えりりんさん)。 [追加] 非公開スイッチを追加。 ──────────────────────────────────── HAS060.X v3.09+24 [追加] MOVEA の最適化を追加。 MOVEA.L An,An → 削除 MOVEA.wl #0,An → SUBA.L An,An MOVEA.L #d16,An → MOVEA.W #d16,An ──────────────────────────────────── HAS060.X v3.09+25 97-03-20 [追加] CLR の最適化を追加。 CLR.L Dn → MOVEQ.L #0,Dn ──────────────────────────────────── HAS060.X v3.09+26 [追加] ADDA/CMPA/SUBA の最適化を追加。 ADDA.wl #0,An → 削除 ADDA.wl #d3,An → ADDQ.W #d3,An ADDA.wl #-d3,An → SUBQ.W #d3,An ADDA.L #d16,An → LEA.L (d16,An),An *0,d3,-d3を除く CMPA.wl #0,An → TST.L An *68020以上 CMPA.L #d16,An → CMPA.W #d16,An SUBA.wl #0,An → 削除 SUBA.wl #d3,An → SUBQ.W #d3,An SUBA.wl #-d3,An → ADDQ.W #d3,An SUBA.L #-d16,An → LEA.L (d16,An),An *0,d3,-d3を除く ──────────────────────────────────── HAS060.X v3.09+27 [追加] -c4 を追加。 ──────────────────────────────────── HAS060.X v3.09+28 [追加] LEA の最適化を追加。 LEA.L 0,An → SUBA.L An,An LEA.L (An),An → 削除 LEA.L (d3,An),An → ADDQ.W #d3,An LEA.L (-d3,An),An → SUBQ.W #d3,An ──────────────────────────────────── HAS060.X v3.09+29 97-03-29 [追加] ASL の最適化を追加。 ASL.bwl #1,Dn → ADD.bwl Dn,Dn ──────────────────────────────────── HAS060.X v3.09+30 97-04-10 微調整。 ──────────────────────────────────── HAS060.X v3.09+31 [修正] CINV/CPUSH を行頭から書いたときオペランドに DC を指定すると illegal operand エラーが出る不具合(PMOVE の SCC と VAL でも同様)を修正(報告: Syoさん)。 ──────────────────────────────────── HAS060.X v3.09+32 97-05-26 [修正] LPSTOP が unsized となっていた不具合を修正(報告:Syoさん)。 ──────────────────────────────────── HAS060.X v3.09+33 [追加] プレデファインシンボル CPU に対応(要望:Sharl Morlaroll さん)。 [修正] マニュアルで PMOVE の不具合が VAL だけとなっていたので SCC も追記(報 告:立花えりりんさん)。 ──────────────────────────────────── HAS060.X v3.09+34 [追加] プレデファインシンボル __DATE__,__TIME__ に対応。 ──────────────────────────────────── HAS060.X v3.09+35 [追加] CMP #0 の最適化を追加。 CMP.bwl #0,Dn → TST.bwl Dn ──────────────────────────────────── HAS060.X v3.09+36 [追加] MOVE #0,Dn の最適化を追加。 MOVE.bw #0,Dn → CLR.bw Dn ──────────────────────────────────── HAS060.X v3.09+37 [追加] -up,-dp を追加。 ──────────────────────────────────── HAS060.X v3.09+38 97-06-26 [追加] CMPI #0 の最適化を追加。 CMPI.bwl #0,<ea> → TST.bwl <ea> ──────────────────────────────────── HAS060.X v3.09+39 97-07-09 [修正] コマンドラインスイッチ -1 を指定すると JBRA/JBSR/JBcc の最適化が正しく 行われない不具合を修正(+18 から,報告:DONさん)。 ──────────────────────────────────── HAS060.X v3.09+40 97-07-16 [修正] アセンブル対象の CPU が 68040 または 68060 のとき、FMOVEM.L #imm,FPcr で software emulation が出る不具合を修正(+01 から,報告:立花えりりんさん)。 ──────────────────────────────────── HAS060.X v3.09+41 97-07-20 [修正] スケールファクタを使用しているプログラムのアセンブル中にバスエラーなど の異常が発生することがある不具合を修正(v3.09 から,報告:BEL さん)。 [変更] HAS060.X 本体を .R 形式に変換できない不都合を回避(+31 から)。 ──────────────────────────────────── HAS060.X v3.09+42 97-09-07 [追加] SUBI/ADDI #0 の最適化を追加。 ADDI.bwl #d3,<ea> → ADDQ.bwl #d3,<ea> SUBI.bwl #d3,<ea> → SUBQ.bwl #d3,<ea> マニュアルの「従来から行われていた単一命令の最適化」に Bcc の最適化が 入っていなかったので追加。 Bcc.swl label → 削除 マニュアルに「アセンブル対象の CPU のデフォルトは常に 68000」の例を追 加。 ──────────────────────────────────── HAS060.X v3.09+43 97-09-14 [追加] -c0 ですべての最適化を禁止。 [変更] 追加された最適化を -n で禁止しない。 [修正] マニュアルに -n でクイックイミディエイト形式への変換を禁止できると書か れていた不備を修正(報告:M.Suzuki さん)。 -c[n] を複数回指定した場合に後から指定した方が有効にならない場合があっ たので修正。ただし、-c1 に限って (d,An) 以外の最適化の可否に影響しない。 ──────────────────────────────────── HAS060.X v3.09+44 97-09-17 [追加] -cmnemonic で software emulation の命令を展開する。 -cfscc と -cmovep に対応。-call ですべて有効。 ──────────────────────────────────── HAS060.X v3.09+45 [準備] shift の準備。 ──────────────────────────────────── HAS060.X v3.09+46 [準備] ソースが大きくなったので、内部の相対分岐のマージンを拡げた。 ──────────────────────────────────── HAS060.X v3.09+47 97-09-21 [追加] -cfscc と -cmovep の展開を拡充。movep を展開しても 68000 で動かないコ ードにならないようにした。 ──────────────────────────────────── HAS060.X v3.09+48 97-09-24 [修正] 以下の最適化が 68040 以上を除くとなっていたが、68040 でも効果があるの で、68060 だけを除くことにした。 ASL.bwl #1,Dn → ADD.bwl Dn,Dn なお、68060 ではこの最適化は動作速度にまったく影響しない。 ──────────────────────────────────── HAS060.X v3.09+49 97-09-28 [修正] -m の後にスペースがあるとエラーになる不具合を修正(+15 から)。 68000 では -cmnemonic を指定するとアドレスエラーが出ることがある不具合 を修正(+44 から)。 -dp および -up で -p が効いてしまい、また、それぞれ -d と -p、-u と -p が指定されたものと紛らわしいため、-dp および -up を廃止。代わりに -y[1] でプレデファインシンボル許可、-y0 で禁止とする。 [変更] インクルードファイルの検索順序を、カレントディレクトリ→スイッチ(-i) →環境変数(include)の順序に変更(従来はスイッチ→カレント→環境変数)。 ヘルプおよびドキュメントの -cmnemonic の表現を -c<mnemonic> に変更。 (以上、報告・要望とも立花えりりんさん) ──────────────────────────────────── HAS060.X v3.09+50 97-10-06 [修正] シフト・ローテート命令のイミディエイトオペランドが 1〜8 の範囲外のとき のエラーメッセージが「illegal shift count error」ではなく「illegal quick size error」となっていた不具合を修正(v3.09 から,報告:立花えりりんさん)。 FADD.D (SP),FP0;BRA @F;NOP;@@: の BRA が最適化されない不具合を修正 (+07 から,報告:立花えりりんさん)。 ──────────────────────────────────── HAS060.X v3.09+51 97-10-13 [追加] -c4 が指定されているとき、直後への BSR/JBSR を PEA に最適化する。 [修正] .ALIGN 1 がエラーにならない不具合を修正(v3.09 から)。 .OFFSET セクションで指定した .ALIGN がオブジェクトファイルに出力される 不具合を修正(v3.09 から)。 BRA @F;.REPT 30;FADD.X FP0,FP0;.ENDM;@@: の BRA が最適化されない不具合 を修正(+50 から)。 マニュアルで Bcc と BRA の最適化にサイズが書いてあり、また、FBcc と PBcc の最適化が記載されていなかった不備を修正。(以上、報告は立花えりり んさん)。 マニュアルを加筆修正。 ──────────────────────────────────── HAS060.X v3.09+52 97-10-30 [追加] 直接記述された整数(符号を含まない)を 64 ビットまで解釈する。 浮動小数点数のオペランドにサイズ指定があるとき、指定されたサイズの浮動 小数点数に丸める。 [変更] 直接記述された整数(符号を含まない)が 64 ビットに入り切らない場合はエ ラー「illegal integer」を通知する。 32 ビットに入り切らない整数が .S/.D/.X/.P/.Q 以外の命令や整数のオペラ ンドに記述されたとき、エラー「overflow」を通知する。 浮動小数点数のオペランドでは、直接記述された整数を符号つき 64 ビットの 範囲で解釈する。 [修正] PMOVE #<data>,<PMMU Register> で <PMMU Register> が CRP/SRP/DRP のいず れかのとき正しくアセンブルできない不具合を修正(v3.09 から,報告:立花えり りんさん)。 アセンブル対象の CPU が 68020 以上のとき、-c0 でも CMPA.wl #0,An が TST.L An に最適化される不具合を修正(+26 から,報告:立花えりりんさん)。 -call の直後の 1 文字が = でないと無視される不具合を修正(+44 から,報 告:立花えりりんさん)。 負の整数から浮動小数点数への変換を間違える不具合を修正(v3.09 から)。 1.E+10 がエラーになる不具合を修正(v3.09 から)。 ──────────────────────────────────── HAS060.X v3.09+53 97-11-01 [修正] 10 進数の整数の直後のサイズ指定がエラーになる不具合を修正(+52 から)。 ──────────────────────────────────── HAS060.X v3.09+54 97-11-23 [修正] 浮動小数点数の内部表現の分割表記に $80000000 以上の整数が含まれている とエラーになってしまう不具合を修正(+52 から,報告:立花えりりんさん)。こ の修正に伴って、FMOVE.X #$80000000,FP0 のような記述ができなくなった。 ──────────────────────────────────── HAS060.X v3.09+55 98-01-05 [追加] (d,PC) を xxx.L に変換するスイッチ -b2/-b4 を追加。 [変更] -1 を指定すると -b[1] と -e も指定されたものと見なす。 ──────────────────────────────────── HAS060.X v3.09+56 98-01-10 [変更] これまで非公開だった 68060 のエラッタ F6 の対策を公開。これに伴って、 非公開スイッチ -f43g を削除。エラッタ F6 のワーニングメッセージを「NOP inserted for 68060(F43G)」に変更。なお、エラッタ F6 の対策は +07 から機 能していた。 [追加] 68060 のエラッタ I11 の対策を追加。エラッタ I11 のワーニングメッセージ 「MOVEA inserted for 68060(F43G/G65V)」を追加。 エラッタ関連を含めてマニュアルを加筆修正。 ──────────────────────────────────── HAS060.X v3.09+57 98-01-24 [追加] マクロに指定されたサイズを取得するローカルシンボルを定義するための疑似 命令 .SIZEM を追加。 ──────────────────────────────────── HAS060.X v3.09+58 98-01-25 [追加] 条件付きのマクロを作りやすくするために、Bcc/DBcc/JBcc/Scc/TRAPcc の条 件を逆にしたニモニック BNcc/DBNcc/JBNcc/SNcc/TRAPNcc を追加。 .ELSEIF の省略形の .ELIF を追加。 [修正] マニュアルの存在しない命令の解釈のリストで Bcc/DBcc/JBcc/Scc/TRAPcc の HS/LO/NZ/ZE が抜けていたので追加。 ──────────────────────────────────── HAS060.X v3.09+59 98-02-08 [追加] JBRA/JBSR/JBcc にサイズを指定できるようにした。JBcc.L <label> は常に BNcc @f;JMP <label>;@@: に展開される。 [修正] マニュアルの存在しない命令の解釈のリストで INC/DEC が抜けていたので追 加。 [追加] マクロ定義ファイル K_MACRO.MAC を添付。 ──────────────────────────────────── HAS060.X v3.09+60 98-03-27 [修正] .OFFSET セクションで DS の引数に行頭のシンボルを使えない不具合を修正 (v3.09 から,報告:たけべえさん)。 例: .OFFSET 0;x:;.DS.B 1;y:;.DS.B y-x。 ──────────────────────────────────── HAS060.X v3.09+61 98-03-31 [追加] MOVE/ORI/EORI #<data>,CCR/SR で未定義のビットを操作するような定数が指 定されたら、ワーニング「insignificant bit」を通知する。MOVE #%01111,CCR を MOVE #$01111,CCR と書き間違えた場合などにある程度有効と思われる。ANDI については ANDI.W #$F8FF,SR のような記述があり得るのでチェックしない(要 望:MOR さん)。 ──────────────────────────────────── HAS060.X v3.09+62 98-03-31 [修正] MOVEP.L (d,An),Dn の展開に SWAP を使う。68060 での所要時間は変わらない が、68000 で実行した場合は SWAP を使った方が速い(報告:MOR さん)。 ──────────────────────────────────── HAS060.X v3.09+63 98-03-31 [追加] JMP/JSR の最適化を追加(要望:MOR さん)。 JMP (2,PC) → 削除 JMP (<label>,PC) → 削除 *直後へのジャンプ JMP (<label>,PC) → JBRA <label> *直後へのジャンプを除く JMP <label> → 削除 *直後へのジャンプ JMP <label> → JBRA <label> *直後へのジャンプを除く JSR (2,PC) → PEA.L (2,PC) JSR (<label>,PC) → PEA.L (2,PC) *直後へのサブルーチンコール JSR (<label>,PC) → JBSR <label> *直後へのサブルーチンコールを除く JSR <label> → PEA.L (2,PC) *直後へのサブルーチンコール JSR <label> → JBSR <label> *直後へのサブルーチンコールを除く ──────────────────────────────────── HAS060.X v3.09+64 98-04-13 [追加] エラッタ対策を禁止するスイッチ -k[1] を追加(要望:Syoさん)。 [修正] エラッタ I11 の対策で、MOVE to USP の行にラベルがあると対策が行われな い不具合を修正(+56 から,報告:Syoさん)。 ──────────────────────────────────── HAS060.X v3.09+65 98-05-14 [修正] .END の右側に注釈を書くとき、実行開始位置のラベルを省略すると注釈の部 分を解釈しようとする不具合を修正(v3.09 から)。 [マニュアルの修正] CLR.wl An の最適化結果が SUBA.L になっていたので SUBA.wl に修正(+01 から,報告:立花えりりんさん)。 マクロのオペレーションサイズの BRA/BSR/Bcc の例が不適切だったので変更 (+57 から,報告:立花えりりんさん)。 [追加] ソースリストを公開。 マクロ定義ファイル HANOI.S を添付。 ──────────────────────────────────── HAS060.X v3.09+66 98-05-25 [追加] ANDI to SR/CCR で、未定義ビットをクリアしようとしたらワーニングを出す (要望:立花えりりんさん)。 [修正] -y[n] の n を省略せずに書くと、どんな値を指定してもエラーにならず -y0 として解釈される不具合を修正(+49 から,報告:立花えりりんさん)。 ──────────────────────────────────── HAS060.X v3.09+67 98-07-05 [追加] STOP/LPSTOP でもワーニング「insignificant bit」を通知する(提案:立花え りりんさん)。 [変更] ドキュメントを整理。 ──────────────────────────────────── HAS060.X v3.09+68 98-07-14 [追加] 任意のファイルをオブジェクトに取り込む疑似命令 .INSERT を追加。PCM、フ ォント、スプライトなどのバイナリファイルを、.DC で記述したように取り込む ことができる(要望: Mitsuky さん)。 ──────────────────────────────────── HAS060.X v3.09+69 98-07-14 [追加] プレデファインシンボル __HAS__ と __HAS060__ を追加。 __HAS__ は HAS.X のバージョン(309)に固定。__HAS060__ は HAS060.X のバージョン(69)に固 定。 ──────────────────────────────────── HAS060.X v3.09+70 98-07-29 [修正] .INSERT のオフセットやサイズに 16 進数を使用すると正しく動作しないこと がある不具合を修正(+68 から)。 ──────────────────────────────────── HAS060.X v3.09+71 98-08-10 [追加] 改良構想メモ PROJECTS.DOC を追加。 [修正] -1 を指定したとき FMOVE FPn,<label> がエラーになる不具合を修正(+18 か ら,報告:立花えりりんさん)。 ──────────────────────────────────── HAS060.X v3.09+72 98-08-18 [追加] .SIZEM の第 2 引数で、マクロの引数の個数を受け取るローカルシンボルを定 義できる。 ──────────────────────────────────── HAS060.X v3.09+73 98-08-19 [追加] 疑似命令 .DC のデータに個別にサイズを指定できる(要望:ねもとさん)。 ──────────────────────────────────── HAS060.X v3.09+74 98-08-21 [追加] マクロ定義中に「@〜」の形で記述されたシンボルが、自動的にそのマクロの 中だけで有効なローカルシンボルになる(要望:立花えりりんさん)。 [修正] .IF 不成立部に間違ったローカルラベル宣言(999: など)があるとエラーが 出る不具合を修正(v3.09 から)。 ──────────────────────────────────── HAS060.X v3.09+75 98-08-22 [修正] 数字ローカルラベルが定義できなくなっていた不具合を修正(+74 から,報告: Syoさん)。 アーカイブに KNOWNBUG.DOC が入っていなかった。 ──────────────────────────────────── HAS060.X v3.09+76 98-08-26 [修正] マクロ内ローカルシンボル @〜 を 1 つのマクロの中で複数種類使用するとそ の参照に失敗して undefined symbol error が出る不具合を修正(+74 から,報 告:たけべえさん)。 -n [-k0] のとき、浮動小数点命令を使用すると分岐命令のオフセットがずれ ることが判明(+51 以前から,報告:ねもとさん)。これは未修正なので KNOWNBUG.DOC に記載。 ──────────────────────────────────── HAS060.X v3.09+77 98-10-10 [修正] -p を指定したとき、疑似命令 .INSERT で 1 度に 256 バイト以上読み出すと バスエラーなどの致命的なエラーが発生する不具合を修正(+68 から,報告:Sy oさん)。 ──────────────────────────────────── HAS060.X v3.09+78 98-11-20 [修正] 68060 のエラッタ対策がパス 1 で確定できない最適化に依存しているため、 浮動小数点命令を含むプログラムを -n または -c0 を指定して -k[1] を指定せ ずにアセンブルすると分岐命令のオフセットやリロケートテーブルが壊れて実行 できないオブジェクトを出力するという不具合がありました。これを回避するた めに、-n または -c0 が指定されたときは自動的に -k[1] も指定されたものと 見なし、逆に -k0 が指定されたときはそれ以前に指定された -n(または -c0 の効果の一部)が無効になるようにしました(+07 から,報告:ねもとさん)。 ──────────────────────────────────── HAS060.X v3.09+79 99-02-13 [変更] ソースファイル名が複数指定されたとき、後から指定されたほうを有効にする のではなく、エラー(使用法表示)にする(要望:立花えりりんさん)。 [修正] 疑似命令 .DC のデータの個別のサイズ指定で .B が正常に機能しない不具合 を修正(+73 から,報告:たけべえさん)。 疑似命令 .DC のデータの個別のサイズ指定で .S/.D/.X/.P がエラーにならな い不具合を修正。 メモリが極端に不足している状態で実行するとバスエラーが出たり、.R 形式 にしたときはメモリが極端に不足していると直後のメモリブロックが破壊される 可能性がある不具合を修正(v3.09 から,報告:立花えりりんさん)。 コマンドラインに '=' で始まる単語があるとハングアップする不具合、およ び、ソースファイル名、-t のパス名、-i のパス名、-o のオブジェクトファイ ル名、-p のリストファイル名に '=' を含めることができない不具合を修正 (v3.09 から)。 RTD で insignificant bit が出る不具合を修正(+67 から,報告:立花えりり んさん)。 マニュアル(HAS060.DOC)の insignificant bit の説明の表で EORI.W #<data>,SR などの #<data> のビット 11 の条件が抜けていたので加筆修正(報 告:立花えりりんさん)。 ──────────────────────────────────── HAS060.X v3.09+80 99-02-25 [修正] +79 の .DC のデータの個別のサイズ指定の修正が機能しない場合があった不 具合を修正(+73 から,報告:たけべえさん)。 [追加] ColdFire に対応。-m5200/-m5300/-m5400 を追加。疑似命令 .CPU で 5200/5300/5400 を指定可能。疑似命令 .5200/.5300/ .5400 を追加。ColdFire のニモニックとアドレッシングの制約に対応。MAC 命令に対応。 レジスタリストや文字列の占有バイト数を計算する演算子 .SIZEOF.() を追加 (要望:いがらしさん)。 シンボルが定義済みかどうかを調べる演算子 .DEFINED. を追加。 疑似命令 .DC で複数の文字列を , で区切らずに連続して記述できる (「.DC.B 'ABC''DEF'」など。従来は、1 番目の文字列を数値に変換しようとし てエラー「overflow」が発生するなど、無意味な挙動をしていた)。 TRAPcc を TPcc と書ける。 .OFFSET の拡張版で、初期値を与えるシンボルを指定できてシンボルの上書き も可能な疑似命令 .OFFSYM を追加(要望:たけべえさん)。 .SET および .OFFSYM によるシンボルの上書き禁止条件を強化するスイッチ -j を追加。 ──────────────────────────────────── HAS060.X v3.09+81 99-02-27 ソースリストのフォーマットを変更(実行ファイルは +80 とまったく同じ)。 ──────────────────────────────────── HAS060.X v3.09+82 99-03-07 [追加] 各種メッセージを日本語化(要望:Mitsuky さん)。これに伴ってエラーの分 類が細かくなり、従来よりも具体的なエラーメッセージを表示するようになった。 引数の数が決まっている疑似命令の引数の末尾のチェックを強化。.DC と書く べきところを .DS と書いてしまった場合など、疑似命令の間違いを検出できる 確率が高くなった。 [修正] .IF 条件成立部のまま .ENDIF が足りない状態でファイルが終わったとき、存 在しない行番号を示したエラーメッセージを大量に出力する不具合を修正 (v3.09 から)。 ColdFire のとき CPUSHL がアセンブルできなかった不具合を修正(+80 から)。 ──────────────────────────────────── HAS060.X v3.09+83 99-03-19 [追加] 浮動小数点数を含む式で比較や整数演算の演算子が使えるようにした。 エラーメッセージ中の疑似命令の先頭に“.”を付ける(要望:立花えりりんさ ん)。 数字ローカルラベルの最大桁数をスイッチ -s <n> で 4 桁まで選択可能。デ フォルトは 4 桁まで(要望:ゆうき喬史さん)。 エラー「不正なオペランドです」から「ローカルラベルの参照が不正です」を 分離。 [変更] エラーがあったときのメッセージの「致命的な」を除去。 .CPU で未対応の CPU を指定したとき、引数が多すぎるエラーの方が優先して いたので、未対応の CPU に対するエラーが優先するように変更(報告:立花えり りんさん)。 [修正] -o../foo のように記述したとき拡張子の .o が補完されない不具合を修正 (v3.09 から,報告:立花えりりんさん)。 .IF などの引数に浮動小数点数が含まれているとき加減乗除以外の演算子が使 用されていてもエラーにならずそれ以降が無視される不具合を修正(v3.09 から)。 疑似命令のパラメータが間違っているときにパラメータが多すぎると表示され ることがあった不具合を修正(+82 から)。 foo=.low.$1234 のように = と .low./.loww./.sizeof. を繋げて書くと演算 子の先頭の文字がサイズ指定と見なされてしまってアセンブルできない不具合を 修正(v3.09 から,報告:たけべえさん)。 ──────────────────────────────────── HAS060.X v3.09+84 99-04-28 [修正] 1 つのマクロの中のローカルシンボル数が 256 以上(v3.09+57 以降は 254 以上)になると正常に動作しなくなる不具合を修正(v3.09 から)。正常に動作 しなくなっていた原因は、1 つのマクロの中のローカルシンボル番号のカウンタ が 1 バイトしかなく、溢れのチェックが行われていなかったため。今回はこの カウンタを 2 バイトにしてある。溢れのチェックは行っていない。 1 つのマクロの中のローカルシンボル名の長さの合計が長すぎるとバスエラー などの致命的なエラーが発生する不具合を修正(v3.09 から)。バスエラーの原 因は、マクロ定義中にローカルシンボル名を一時的に保存しておくバッファ(登 録が完了した時点で破棄される)が狭い上に、溢れのチェックが行われておらず、 溢れたときに他のワークエリアを破壊していたため。今回はこのバッファのサイ ズを大幅に増やしてあり、溢れのチェックを行っている。ただし、サイズに上限 があることに変わりはない。バッファが溢れそうになったときは、エラー「1 つ のマクロの中のローカルシンボルが多すぎます」で通知する。ただし、アセンブ ラの構造上、マクロ定義のみを中止することが難しいので、このエラーが発生す るとその行で強制的にアセンブルが中止される。 ──────────────────────────────────── HAS060.X v3.09+85 99-06-10 [追加] ビット単位の論理否定演算子で結果のサイズを制限する .notb. と .notw. を 追加。.notb.X は (.not.X).and.$FF、.notw.X は (.not.X).and.$FFFF に変換 される。 [変更] .ds の引数が負数のとき、.text/.data セクションではエラー、その他ではワ ーニングで通知する(要望: たけべえさん)。 .offsym 中に .even/.quad/.align があったらエラー。これは .offsym 中で .even/.quad/.align が問題なく使えるようになるまでの暫定処置。 [修正] 浮動小数点数を含む式で整数単項演算子が使えなかった不具合を修正(+83 か ら)。 浮動小数点数の内部表記 !xxxxxxxx のエンコードルーチンが演算子 !=(<> と同じ)を潰してしまっていたので、!= も使えるように修正した(v3.09 から)。 [その他] M68K.DOC と COLDFIRE.DOC を資料アーカイブとして付属。 ──────────────────────────────────── HAS060.X v3.09+86 99-10-08 [追加] オペランドとサイズ関係のエラーメッセージの細分化を促進。 [修正] .end の引数に外部参照シンボルが含まれていた場合のエラーメッセージを修 正(報告:M.Suzuki さん)。 foo fequ foo に対するエラーメッセージを修正。 外部参照宣言したシンボルを誤って行頭ラベルとして再定義しようとしたとき、 二重定義のエラーメッセージが正しく表示されず、バスエラーが発生することが ある不具合を修正(+82 から,報告:立花えりりんさん,M.Suzuki さん)。 浮動小数点数を含む式で + 符号が使えず加算と減算も逆になっていた不具合 を修正(+83 から,報告:たけべえさん)。 ──────────────────────────────────── HAS060.X v3.09+87 99-11-17 [修正] tst (0,a0)+ が「オペランドが多すぎます」になる不具合を修正(報告:立花 えりりんさん)。 ──────────────────────────────────── HAS060.X v3.09+88 2016-01-01 [追加] ワーニング「整数を浮動小数点数の内部表現とみなします」を追加。 エラー「浮動小数点数の内部表現の長さが合いません」を追加。 -f の 5 番目の引数で PRN ファイルのコード部の幅を指定。 [修正] .OFFSYM にシンボルがないとき .OFFSET に遷移するとバスエラーが発生する 不具合を修正(報告:たけべえさん)。 文字列→浮動小数点数変換で正確に表現できる数に誤差が入る不具合を修正。 [変更] タイトルメッセージが 80 文字に収まるように著作権表示をコンパクトに。 PRN ファイルの日付を YYYY-MM-DD に変更。 [追記] DEBUGGED.DOC に以下を追記。 ・文字列→浮動小数点数変換で正確に表現できる数に誤差が入る不具合 KNOWNBUG.DOC に以下を追記。 ・BRA.L/BSR.L/Bcc.L の後に .CPU 68000 があるとアセンブルできない ・.DC.B 1.0 がエラーになる ・式が長すぎるとバスエラーなどの致命的なエラーが発生する ──────────────────────────────────── HAS060.X v3.09+89 2016-08-07 [追加] 060turbo で 060high 1 のとき 16MB を超えるメモリを確保できる。 [修正] BRA.L の後に .CPU 68000 があるとアセンブルできない不具合を修正。 [追記] DEBUGGED.DOC に以下を追記。 ・BRA.L の後に .CPU 68000 があるとアセンブルできない不具合 [削除] KNOWNBUG.DOC から以下を削除。 ・BRA.L/BSR.L/Bcc.L の後に .CPU 68000 があるとアセンブルできない ──────────────────────────────────── HAS060.X v3.09+90 2023-07-06 [変更] 環境変数 HAS の -i をコマンドラインの -i の後に検索する。 ──────────────────────────────────── HAS060.X v3.09+91 2023-07-07 [修正] -c4 のとき ADDA.W/SUBA.W #$8000,An が間違って変換される不具合を修正。 [変更] 使用法の as を has060 に変更、環境変数の説明に (-iは後ろ) を追加。 ──────────────────────────────────── (EOF)