コア戦争
出典: フリー百科事典『ウィキペディア(Wikipedia)』
コア戦争 (コアせんそう、英語: Core War) は、電子計算機上で遊ばれるゲームの一種である。仮想機械上でプログラム同士を戦わせる。
[編集] 歴史
コア戦争の発想の元になったのはベル研究所のVictor A. Vyssotsky、Robert Morris Sr.、M. Douglas McIlroy が1960年代に開発した Darwin だった。1984年に A. K. Dewdney と D. G. Jones が「コア戦争ガイドライン」を発行し、同年DewdneyはScientific American誌の"Computer Recreations"でこのゲームを紹介した。日本でも同誌の日本版日経サイエンスの「コンピュータレクリエーション」コーナーなどで紹介され、一時はよく知られていた。
[編集] ゲームの概要
Redcodeと呼ばれる比較的単純なアセンブリ言語の一種によってプログラムを記述し、MARS (Memory Array Redcode Simulator) と呼ばれる仮想機械の上で動作させる。MARSには「コア」と呼ばれるメモリ空間があり、プログラムはその上に配置される。「コア」の名は初期の計算機のRAMとして用いられた磁気コアメモリに由来する。
初期化し無内容としたコアの上に複数のRedcodeプログラム(Warrior、戦士)を配置し動作させ(=戦わせ)、最後まで動作し生き残ったものを勝者とする。プログラムは自分の分身を作る、他者のコードを上書き破壊するなどして戦う。
MARSはコア上のプログラムを逐次実行する(複数のプログラムが存在する場合は、それぞれのコードを同時に動作させる)。コアは連続した番地を持つが、絶対番地を参照するコードは用意されていない。また、コアの番地の両端は連続している(コアの大きさはCORESIZEで定義されるが、CORESIZE番地は0番地と同一である)。初期のRedcodeはシングルプロセスであったが、現在ではMARSはタスク待ち行列 (task queue) を持つようになり、SPL命令によって新規のプロセスを実行できるようになった(待ち行列には各プロセスの命令ポインタに当たるtask pointerが登録される)。