COREWAR

/
Step 17: Impの簡単な変更(コピー先の観察と実験)
🎯0004番地の命令(Opcode)を MOV にする(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 17 OF 30第3章:ノイマン型の覚醒とデジタル生命の原理⏱ 読了目安:約4分
📖 講義ノート:この実験で起きているコンピュータ科学と人工生命の原理

命令プロジェクション(遠隔コード注入)と空間オフセットの制御

自分自身の命令コード($0)を、隣ではなく離れた番地($4)へ直接転送するテクニックとその戦術的意味

#Instruction Projection#Remote Code Placement#Spatial Offset#Code Overwrite#Imp-Spiral Seed
🔬Step 17: Impの簡単な変更(コピー先の観察と実験)

Impのコピー先(Bの番地)を変えると、自分の分身(命令コード)を好きな番地へ直接送り込むことができます。 現在、0000 番地は MOV.I $0, $2(自分を2つ下の 0002 番地へコピー)になっており、2行目の JMP.A $-1 でループしています。

🎯 やってみよう 0000 番地の B(右の番地) を $2 から $4(4つ下の箱) に変更して [STEP] を押し、0004 番地 に MOV 命令を送り込みましょう!

1. 「前進するImp」から「遠隔へ命令を飛ばす砲台」への変化

Step 16のImpは、自分自身($0)を「すぐ1つ下の箱($1)」にコピーしていたため、次のサイクルで自分の足(PC)がそのコピーの上に乗って歩いていきました。 では今回のStep 17のように、0000 番地の命令を『MOV.I $0, $4』に変えて、コピー先を1つ下ではなく「4つ下の 0004 番地」にしたらどうなるでしょうか?

もし1行しかなければ、0004 番地へコピーを飛ばした次の瞬間、自分の足は 0001 番地の空地に落ちて死んでしまいます。そこで今回のプログラムでは、2行目(0001番地)に『JMP.A $-1』を置いて自分の本体は 0000〜0001 番地で安全にループさせつつ、1行目の『MOV.I $0, $4』によって「自分自身のMOV命令のクローンを、離れた 0004 番地へビームのように直接送り込む(投影する)」という構造をとっています。

[0000] MOV.I $0, $4  ──(Beams executable MOV code 4 rows ahead!)──┐
[0001] JMP.A $-1, #0   (Parent stays alive in a safe loop)        │
[0002] DAT.F #0, #0    (Untouched empty space)                    │
[0003] DAT.F #0, #0    (Untouched empty space)                    │
[0004] MOV.I $0, $4  ◄────────────────────────────────────────────┘

2. なぜ「DAT」ではなく「MOV命令」を敵陣に送り込むのか?

「遠くの番地を書き換えるなら、DAT(データ爆弾)を投げればいいのでは? なぜわざわざ自分自身のMOV命令($0)を遠くへコピーするの?」と疑問に思ったかもしれません。ここには、CoreWarの中級・上級戦術につながる2つの極めて重要な理由があります。

1つ目の理由は『自己複製コロニー(Paper)やインプ・スパイラル(Imp-Spiral)の建設』です。後ほど第5章で登場する自己複製プログラムは、まず離れた安全な番地に自分自身の命令コード(MOVやSPLなど)を次々と送り込んで「新しい身体(クローン)」を組み立て、完成した瞬間にそこへ実行ポインタを送り込んで新しい生命として起動させます。今回の実験は、まさにその「遠隔地への遺伝子コードの転写」の第一歩なのです。

2つ目の理由は『敵のコードの書き換え(洗脳・無力化)』です。もし敵のプログラムが動いている真っ只中に『MOV』命令や『JMP』命令を送り込んで上書きしたらどうなるでしょうか? 敵は死なない代わりに、敵自身のプログラムカウンタがあなたが送り込んだ命令を勝手に実行させられ、自分の身体を自分で壊したり、あらぬ方向へ飛ばされたりするのです!

3. メモリオーナーシップ(所有権カラー)の視覚化

右側のArena(800マスのグリッド)と左のエディタを見比べてみてください。[STEP] を押して 0004 番地に『MOV.I $0, $4』が書き込まれた瞬間、0004 番地のマスがあなたのチームカラー(青色)に明るく点灯し、そこに「命令のグリフ(記号)」が表示されたはずです。

MARSシミュレーターは、各メモリセルに対して「誰が最後にその箱を書き換えたか(Owner ID)」と「そこに入っているのはデータ(DAT)か実行可能な命令か」をリアルタイムに追跡しています。遠く離れた番地に自分の色と命令を刻み込む快感を覚えておきましょう。次は、固定された番地($4)だけでなく、ループのたびに狙う番地を動的に変える『@(間接ポインタ)』の魔法を解き明かします!

🔒

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

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