第6章 エラー一覧 |
M86Kが検出するエラーには、致命的なエラー、エラー、警告の3つのレベルがあります。致命的なエラーが検出された場合、M86Kはその時点で即時に実行を中止します。「作業用バッファが不足している」などの問題がこのレベルに該当します。これに対してエラーが検出された場合には、その時点で実行中のパス(パス1またはパス2)が完了した時点で実行を中止します。いわゆる「文法エラー」がこれにあたります。さらに警告の場合には、オペランドの値が許されている範囲を越えている、といった一概にはエラーといえないレベルの問題であるため、M86Kは実行を中止しません。
致命的なエラーが検出された場合、M86Kは出力するように指示されているすべてのファイルを生成しません。これに対してパス1でエラーが検出された場合には、出力するように指示されているすべてのファイルを生成しませんが、パス2で検出された場合にはリストファイルだけは生成します(生成することを指定されていた場合)。次にエラー表示の書式を示します。
filename(linenumber): source line error message
シンボルxyzは未定義です。sample.asm(54): LD xyz xyz: undefine symbol
M86Kが検出する可能性のある警告レベルのメッセージとその意味を次に示します。なお、メッセージ中の???は、場合によって変わる部分を表します。
ビット操作命令において、操作対象ビットの指定が許される範囲を越えています。
アセンブル時点で値が確定するような式が必要です。
ORG命令のオペランドにおいて、指定された値が負です。
ORG命令のオペランドにおいて、指定された値がROMの容量を越えています。
アセンブルされた命令のアドレスがROMの容量を越えました。
CHIP命令のオペランドが環境変数で指定されているものと食い違っています。
INCLUDE疑似命令にて指定されたソースファイル中にEND疑似命令が現れました。
ファンクションの定義中でないのにENDFが現われました。
マクロの定義中でないのにENDMが現われました。
マクロの定義中でないのにEXITMが現われました。
ファンクション定義の内容が大き過ぎてバッファに入りません。
2項演算子の両辺の属性(帰属するバンクやセグメント)が一致しません。
SETまたはEQUのオペランドの式が不当な形式です。
アドレスの下位12ビットが0FFEHまたは0FFFHの時にJMPまたはCALL命令が現われました。セグメントの配置モードが「FREE」のためリンクの結果によっては問題ない場合もありますが、当該セグメントがメモリバウンダリの先頭から配置された場合はリンカでエラーとなります。
ジャンプ先のアドレスがメモリバウンダリの外にあります。セグメントの配置モードが「FREE」のためリンクの結果によっては問題ない場合もありますが、当該セグメントがメモリバウンダリの先頭から配置された場合はリンカでエラーとなります。
マクロの定義中でないのにLOCALが現われました。
演算式中にマクロとして登録されているシンボルが現われました。
マクロの定義にもかかわらずマクロの名前がありません。
文字列定数中に文字が見当たりません。
WIDTH命令のオペランドは72以上132以下でなければなりません。
パブリック宣言されているシンボルの値が定義されていません。
ハブリック宣言されたシンボルにSETを使って値を再設定しようとしています。
PUBLIC,EXTERN,OTHER_SIDE_SYMBOLのオペランドにシンボルがありません。
演算式の中に未定義シンボルがあります(パス2でのみ検出されます)。
値が許される範囲にありません(「許される範囲」はオペランドによって変わります)。
演算子MODの右辺が0です。