2026年2月10日火曜日

ICWS’94について教えてください

 ICWS’94 は、Core War のアセンブリ言語 Redcode と、その実行環境 MARS のために作られた「1994年版の標準案(draft)」です。正式採択された“最終規格”というより、事実上もっとも広く使われた共通仕様として扱われています。仕様本文(注釈付きドラフト)が公開されています。

ICWS’94 が何を決めるものか

  • Redcode の文法(命令、アドレッシング、修飾子など)

  • 命令の意味(各命令がメモリやプロセスにどう作用するか)

  • MARS の基本ルール(プロセス、実行、致死条件などの前提)

「同じ戦士(warrior)が、違うシミュレータでも同じ挙動になる」ための共通土台です。

ICWS’88 からの大きな変更点(ICWS’94の“肝”)

1) アドレッシングモードが増えた(4 → 8)

ICWS’94 では Aフィールド間接系を中心に増え、合計 8 モードになります(# $ * @ { < } >)。

2) 命令修飾子(modifier)が導入された

.A .B .AB .BA .F .X .I のような修飾子で、「Aフィールドだけ」「Bだけ」「両方」「命令全体」など、演算対象を選べるようになりました。これが戦略表現力を一気に上げます。

3) “違法命令”の扱いが緩くなった(no illegal instructions の方向)

ICWS’94 ドラフトでは、命令とモードの組合せを広く許す設計(違法組合せを減らす)へ寄っています。これも互換性と表現力のための変更点としてFAQ等で説明されています。

4) 後方互換(ICWS’88 戦士が動く)

ICWS’94 は「ICWS’88 の戦士が正しく動く」互換性がある、とFAQで明記されています。

「pMARS が物差し」と言われる理由

pMARS は自分の説明で **「ICWS’94 を実装しつつ ICWS’88 互換」**を掲げています。なので「互換確認の基準」として参照されやすい、という位置づけになります。

まず読むべき一次ソース

  • Annotated Draft of the Proposed 1994 Core War Standard(注釈付きドラフト本文)

  • 補助として、ICWS’94 を前提にした入門ガイド(アドレッシング一覧などが整理されていて速い)