Redcode
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/12/10 07:45 UTC 版)
詳細は「en:Redcode」を参照 0000: ADD.AB # 4, $ 30001: MOV.F $ 2, @ 20002: JMP.B $ -2, $ 00003: DAT.F # 0, # 0 ICWS-94 スタイルの Redcodeでアセンブルされる。Assembled ICWS-94 style Redcode Redcode と MARS 環境は現実のコンピュータやプロセッサの複雑さなしに単純で抽象的なプラットフォームを提供するよう設計されている。Redcode は平凡なCISC アセンブリ言語に似せられているが、多くの点で実際のアセンブリ言語とは異なっている: Redcode はごく少ない命令を持つ。ICWS-88 では 10、ICWS-94 では 18。 いずれのアセンブルされた命令は命令コードと二つの数値フィールドに分割される。数値は命令コードには定義されない。コードは命令全体の一部としてコピーだけされ、同等に比較される。 opcode と二つの数値フィールドに加えて、ICWS-94はいずれの Redcode 命令はデータのサイズ(ひとつのフィールド、両方のフィールド、命令全体のいずれか)を定義する『修飾子』(modifier)を持つことを を可能にする。さらに、いずれの数値フィールドは関連するアドレッシングモード持っている。ICWS-88は4つのアドレッシングモードを定義しており、ICWS-94 ではこれは8にまで拡張されている。 どの Redcode命令も同じ長さと実行時間を持つ。メモリは一命令単位で配置される。 すべての数はメモリサイズより小さい符号なし (つまり非負)整数である。それゆえ数とメモリ位置には一対一の対応がある。すべての演算はメモリサイズを法としたモジュラ演算で行われる。 相対アドレッシングのみが使われる。これはアドレス“0”は常に現在実行中の命令を指していて、アドレス“1”はその後ろの命令となっている。メモリの境界を超えたアドレスは空間の最初からに丸められる。このため、プログラムはメモリ上の絶対位置を知ることは出来ない(知る必要はない)。 いずれのプログラムも自身の命令ポインタを持ついくつかのアクティブなプロセスを持っている。いずれのプログラムも1プロセスから開始するが、他のプロセスはSPL命令によって作られる。それぞれのプログラムのプロセスは交互に実行され、それゆえどのプログラムもそのプログラムが持つアクティブなプロセスの数に反比例した実行スピードになる。プロセスはDAT命令を実行した時か、ゼロで除算したときに死ぬ。プログラムはひとつもプロセスが残っていないときに死んだとみなされる。
※この「Redcode」の解説は、「コア戦争」の解説の一部です。
「Redcode」を含む「コア戦争」の記事については、「コア戦争」の概要を参照ください。
- Redcodeのページへのリンク