COREWAR

/
Step 1: 時間を進める「STEP」ボタン
🎯下部の [STEP] ボタンを2回押して Cycle 2 以上に進める(0/2)

ミッション一覧 (全30ステップ)

第1章:画面とメモリの基本 (1-6)
BASIC★☆☆
Step 1: 時間を進める「STEP」ボタン
🔒
BASIC★☆☆
Step 2: プロセスの停止と「RESET」での復旧
🔒
BASIC★☆☆
Step 3: 「編集できる状態」と「実行中の状態」EDIT
🔒
BASIC★☆☆
Step 4: メモリの箱の3つの部屋(右の部屋 B を変える)EDIT
🔒
BASIC★☆☆
Step 5: 左の部屋(A)と右の部屋(B)を書き換えるEDIT
🔒
BASIC★☆☆
Step 6: 「数値(#)」と「番地($)」の記号の違いEDIT
第2章:代表的な命令とループ (7-13)
🔒
ARITHMETIC★☆☆
Step 7: 足し算の命令「ADD」の観察
🔒
ARITHMETIC★☆☆
Step 8: 足す「数値(A)」を変えてみようEDIT
🔒
ARITHMETIC★☆☆
Step 9: 足す「相手の場所(B)」を変えてみようEDIT
🔒
ARITHMETIC★☆☆
Step 10: 引き算の命令「SUB」を使ってみようEDIT
🔒
BASIC★☆☆
Step 11: 箱を丸ごとコピーする命令「MOV」EDIT
🔒
CONTROL★☆☆
Step 12: 時間を巻き戻すジャンプ命令「JMP」EDIT
🔒
CONTROL★☆☆
Step 13: 簡単なプログラムを作ろう(自動カウンター)EDIT
第3章:ノイマン型とデジタル生命 (14-18)
🔒
BASIC★☆☆
Step 14: なぜ「DAT」が爆弾になるのか?EDIT
🔒
BASIC★☆☆
Step 15: 自分自身の命令をコピーする(コード=データ)EDIT
🔒
BASIC★☆☆
Step 16: お手本観察:最古の生命体「Imp」をSTEP実行する
🔒
BASIC★☆☆
Step 17: Impの簡単な変更(コピー先の観察と実験)EDIT
🔒
ARITHMETIC★★☆
Step 18: 間接参照(@ポインタ)の仕組みを知るEDIT
第4章:伝統的アルゴリズム (19-24)
🔒
STRATEGY★★☆
Step 19: お手本観察:爆撃機「Dwarf」をSTEP実行で解剖する
🔒
STRATEGY★★☆
Step 20: Dwarfの簡単な変更(爆弾の間隔を変える)EDIT
🔒
STRATEGY★★☆
Step 21: 実戦デビュー:爆弾の間隔を調整して標的を破壊せよEDIT
🔒
CONTROL★★☆
Step 22: お手本観察:分裂命令「SPL」と増殖の仕組み
🔒
CONTROL★★☆
Step 23: お手本観察:条件比較命令「SEQ / CMP」で敵を探すEDIT
🔒
STRATEGY★★☆
Step 24: お手本観察と変更:防衛罠「Imp-Gate」でImpを止めろEDIT
第5章:実戦改造と総合演習 (25-30)
🔒
STRATEGY★★☆
Step 25: 【Stone(石)】高速爆撃機の観察とステップ幅の改造EDIT
🔒
STRATEGY★★☆
Step 26: 【Paper(紙)】自己複製スウォーム「Mice」を観察する
🔒
STRATEGY★★★
Step 27: 【Paperの改造】クローン投下距離を変更して増殖せよEDIT
🔒
STRATEGY★★☆
Step 28: 【Scissors(鋏)】索敵スキャナーの観察とスキャン間隔の改造EDIT
🔒
STRATEGY★★★
Step 29: 【Trap(罠)】敵の魂を誘拐する「Vampire」の観察と改造EDIT
🔒
STRATEGY★★★
Step 30: 卒業試験:愛機のチューニングと総合バトルEDIT
👁️ お手本観察モード([STEP] で観察)
[番地][命令 (Opcode)][A (左の値)][B (右の値)]
📦 データ領域 / 爆弾 (DAT)
0000
▼MOV
#
$
0001
▼MOV
<
<
0002
↺JMN
$
$
0003
❖SPL
@
#
0004
+ADD
#
$
0005
↺JMP
$
$
0006
■DAT
$0
$0
0007
■DAT
$0
$0
0008
■DAT
$0
$0
0009
■DAT
$0
$0
0010
■DAT
$0
$0
0011
■DAT
$0
$0
0012
■DAT
$0
$0
0013
■DAT
$0
$0
0014
■DAT
$0
$0
0015
■DAT
$0
$0
0016
■DAT
$0
$0
0017
■DAT
$0
$0
0018
■DAT
$0
$0
0019
■DAT
$0
$0
0020
■DAT
$0
$0
0021
■DAT
$0
$0
0022
■DAT
$0
$0
0023
■DAT
$0
$0
0024
■DAT
$0
$0
0025
■DAT
$0
$0
0026
■DAT
$0
$0
0027
■DAT
$0
$0
🏟️ARENA (20 ROWS)SCOPE: 0000 - 0019
[メモリ空間 800番地 (20行 × 40列)]左のエディタと1対1で同期
TASKS: 0
CYC: 0
📖 講義ノート // STEP 01 OF 30第1章:画面操作とメモリの基本構造⏱ 読了目安:約5分
📖 講義ノート:この実験で起きているコンピュータ科学と人工生命の原理

プログラムカウンタ(PC)とクロックサイクルの物理学

数GHzで駆動する現代の超高速CPUも、本質的にはこの「STEPボタン」を1秒間に数十億回押しているに過ぎない

#Program Counter (PC)#Clock Cycle#Fetch-Decode-Execute#Instruction Pointer#Deterministic State Machine
🔬Step 1: 時間を進める「STEP」ボタン

CoreWar(コアウォー)の世界へようこそ! 左側のパネルは、コンピュータのメモリ(記憶領域)の箱を上から順番に並べたものです。

現在、一番上の 0000 番地 の行が明るく光っています。これが「次に実行される命令の場所」を示す 実行ポインタ(プログラムカウンタ / PC) です。

🎯 やってみよう(編集不要) コードを書き換える必要はありません。 画面下部にあるコントローラーの [STEP](1歩進める)ボタン を 2回 押して、光っている実行ポインタが 0000 ➔ 0001 ➔ 0002 番地へと1行ずつ進む様子を観察しましょう!

1. 光る行の正体:プログラムカウンタ(PC)とは何か?

この最初の実験で、あなたは画面下部の [STEP] ボタンを2回クリックし、明るく光る行が 0000 番地から 0001 番地、そして 0002 番地へと1段ずつ降りていく様子を観察しました。この「今まさに実行しようとしているメモリの番地を指し示す光」こそが、コンピュータ科学において最も重要なレジスタである「プログラムカウンタ(Program Counter: PC)」、別名「命令ポインタ(Instruction Pointer: IP)」です。

私たちが普段使っているスマートフォンやPCの内部には、数十億個のトランジスタが集積されたCPU(中央演算処理装置)が搭載されています。一見すると魔法のように複雑な映像処理やAI推論を同時にこなしているように見えますが、その心臓部で行われていることは驚くほど単純です。CPUは「次にどの番地の命令を実行すべきか」というたった1つの番地番号をプログラムカウンタ(PC)に記憶しており、1ステップごとにその番地の箱を開けて命令を処理し、処理が終わるとPCの値を「+1(次の行)」へと進めているだけなのです。

[Cycle 0] PC = 0000 ──► [0000] ADD.AB #1, $2   (Execute & PC + 1)
[Cycle 1] PC = 0001 ──► [0001] ADD.AB #1, $1   (Execute & PC + 1)
[Cycle 2] PC = 0002 ──► [0002] DAT.F  #0, #0   (Next up...)

2. フェッチ・デコード・エグゼキュートの3拍子

あなたが [STEP] ボタンを1回押した瞬間、CoreWarの仮想計算機「MARS(Memory Array Redcode Simulator)」の内部では、現実のCPUと全く同じ「命令サイクル(Instruction Cycle)」という3段階のドラマが一瞬で実行されています。

第1段階は「フェッチ(Fetch:命令の取り出し)」です。CPUはプログラムカウンタ(PC)が指し示す 0000 番地のメモリ箱にアクセスし、そこに格納されている『ADD.AB #1, $2』という命令データを内部へ読み込みます。 第2段階は「デコード(Decode:命令の解読)」です。読み込んだデータが「足し算(ADD)であり、左の数値 #1 を、2つ下の箱($2)の右の部屋に足すのだな」と回路レベルで解釈します。 第3段階は「エグゼキュート(Execute:実行と書き戻し)」です。実際に算術論理演算装置(ALU)が計算を行い、0002 番地のデータを書き換え、最後にプログラムカウンタ(PC)を 0000 から 0001 へと1つ進めます。

この「フェッチ ➔ デコード ➔ エグゼキュート」の1周期を「1クロックサイクル(Cycle)」と呼びます。現代の3GHz(ギガヘルツ)のプロセッサとは、あなたが手動で押したこの [STEP] ボタンを、水晶振動子のメトロノームに合わせて「1秒間に30億回」という猛烈な速度で自動連打している機械に他なりません。

3. 時間を離散化する「STEP実行」とデバッグの科学

もしコンピュータが常に1秒間に数十億回ものスピードでしか動けなかったとしたら、人間はプログラムがなぜ動いているのか、あるいはなぜバグで壊れたのかを決して理解することはできないでしょう。そこでソフトウェア工学において発明されたのが、連続的に見える時間を「1サイクル単位の離散的なコマ送り」へと分解する「ステップ実行(Single-Stepping)」という手法です。

CoreWarのビバリウム(観察箱)において、この [STEP] ボタンはあなたの「時間顕微鏡」となります。これから先、自己複製する人工生命や、メモリ空間を飛び交う爆撃機、さらには自身のコードを動的に書き換える高度なプログラムに出会ったときも、決して慌てる必要はありません。[STEP] ボタンを押して時間を1サイクルずつ止め、「今、プログラムカウンタ(PC)はどこにあり、どの箱の数字をどう書き換えたのか」を観察すれば、どんなに複雑なアルゴリズムも100%確実に解剖・理解することができるのです。

🔒

🔒 MISSION CLEAR で講義ノートの全編が解放されます

上段の実験シミュレーターでミッションを達成すると自動的に全編がアンロックされます。(下のボタンから今すぐ全文を先に読むことも可能です)