COREWAR

/
Step 3: 「編集できる状態」と「実行中の状態」
🎯0000番地のB値を 1 に変えて [STEP] を押す(0/1)

ミッション一覧 (全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
🟢 編集モード(セルをクリックして変更できます)
[番地][命令 (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 03 OF 30第1章:画面操作とメモリの基本構造⏱ 読了目安:約4分
📖 講義ノート:この実験で起きているコンピュータ科学と人工生命の原理

コンパイル時(Edit Mode)と実行時(Runtime Mode)の二相構造

ソースコードがメモリ上のビット列へと変換され、時間を与えられて動き出すまでの計算機科学的プロセス

#Edit Time vs Runtime#Static Assembly#Memory Load#Initial State Injection#State Verification
🔬Step 3: 「編集できる状態」と「実行中の状態」

メモリの上部にあるステータス表示を見てみましょう。 - 🟢 編集モード(Cycle 0): メモリの数字や命令を自由に書き換えられます。 - 🔒 実行モード(Cycle 1以上): 実行中や停止後はメモリがロックされます。書き直したいときは下部の [RESET] を押せば 🟢 編集モード に戻ります。

🎯 やってみよう 1. 今は 🟢 編集モード です。黄色く光っている 0000 番地の右側の数字(B) の横にある + ボタン を1回押して、0 から 1 に変えてみましょう。 2. 変更できたら、下部の [STEP] を1回押して結果を確認しましょう!

1. 静止した設計図(Edit Mode)と動き出す宇宙(Running Mode)

Step 3では、「🟢 編集モード(Cycle 0)」の状態で 0000 番地の数値を『0』から『1』へと書き換え、その後に [STEP] ボタンを押して「🔒 実行モード(Cycle 1〜)」へと移行する一連の流れを体験しました。この2つのモードの切り替えは、単なる画面上の都合ではなく、すべてのコンピュータ・プログラムが辿る「2つの異なる時間軸」を正確にモデル化しています。

1つ目の時間軸は「設計・アセンブル時間(Edit / Compile Time)」です。Cycle 0 の世界では、時間はまだ止まっています。あなたがエディタの『+』ボタンを押して 0000 番地の数値を 0 から 1 に変えたとき、シミュレーターはあなたの指示を即座に解釈(アセンブル)し、メモリ空間の 0000 番地という箱の中に初期値を配置しています。これはいわば、時計のゼンマイを巻く前に歯車の配置をピンセットで組み立てている状態です。

2つ目の時間軸は「実行時間(Runtime)」です。[STEP] または [PLAY] を押して Cycle 1 に入った瞬間、人間のピンセットはメモリから離れ、プログラム自身の自律的な時間(クロック)が動き出します。

[🟢 EDIT MODE : Cycle 0]  Human edits source ──► Assembler writes Initial Memory State
        │
   Press [STEP] / [PLAY]
        ▼
[🔒 RUNNING MODE : Cycle 1+] CPU Clock ticks ──► Program mutates its own Memory State

2. リアルタイム・静的アセンブリプレビューの仕組み

vivariums.net のワークベンチ(左側のエディタと右側のArena)をよく観察すると、Cycle 0(編集モード)で数字を『+』ボタンで変えた瞬間、まだ [STEP] を押す前であっても、メモリの箱の中身がリアルタイムに更新されていることが分かります。

通常のプログラミング言語(C言語やRustなど)では、人間がテキストファイルにコードを書き、「コンパイラ(Compiler)」や「アセンブラ(Assembler)」という変換ソフトを手動で実行して初めて、機械語のファイルが生成されます。さらにそれを「ローダ(Loader)」がOSのメモリ上に配置してようやく実行準備が整います。

この実験室では、あなたが数値を1つ変えるたびに、バックグラウンドでRedcode-94アセンブラとMARSメモリローダが瞬時に走り、「もし今このコードでCycle 0を開始したら、800個のメモリセルはどう並ぶか」を即座に実体化(Static Compile Preview)しています。だからこそ、数値を変えた瞬間に矢印(ターゲット予測ビーム)が伸び縮みし、プログラムの構造を視覚的に把握できるのです。

3. 初期値(Initial Parameter)が運命を決める

今回のミッションでは、0000 番地の『DAT.F #0, #0』の右側の数値を『1』に変えてから [STEP] を押しました。[STEP] を押した結果、プログラムカウンタは『DAT』を実行したため停止しましたが、0000 番地の箱の中にはあなたがセットした『1』というデータがしっかりと刻み込まれ、ミッションクリアの判定条件(0000番地のB値 == 1)を満たしました。

自律的に動くプログラムや人工生命において、人間が関与できるのは「Cycle 0 における初期コードと初期パラメータの設計」だけです。一度 [PLAY] を押してアリーナへ解き放てば、戦闘中に人間が外から助けてやることはできません。だからこそ、Cycle 0 の編集モードで「どの番地に、どの命令とどの初期値を置いて送り出すか」という初期設計が、デジタル生命の運命のすべてを決定づけるのです。

🔒

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

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