COREWAR

/
Step 16: お手本観察:最古の生命体「Imp」をSTEP実行する
🎯Impを前進させて 0005番地の命令を 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
👁️ お手本観察モード([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 16 OF 30第3章:ノイマン型の覚醒とデジタル生命の原理⏱ 読了目安:約6分
📖 講義ノート:この実験で起きているコンピュータ科学と人工生命の原理

最古のデジタル生命「Imp」の誕生——フォン・ノイマンの自己複製オートマトンとDNAの原理

JMP命令すら持たないたった1行のコード『MOV.I $0, $1』が、自ら道を作りながら永遠に生き続ける仕組み

#Imp (MOV $0, $1)#A. K. Dewdney (1984)#Self-Replicating Automaton#Autopoiesis#DNA Transcription
🔬Step 16: お手本観察:最古の生命体「Imp」をSTEP実行する

前ステップで作った MOV.I $0, $1 ——実はこれこそが、1984年に誕生したCoreWar最古にして最小の人工生命体 「Imp(インプ:小悪魔)」 です!

なぜ JMP 命令もないたった1行で生き続けられるのでしょうか? 1. 0000 番地で自分自身($0)を1つ下の 0001 番地($1)へコピーする。 2. 次のサイクル、実行ポインタが自動的に1つ下の 0001 番地へ進む。 3. そこには、たった今コピーされたばかりの MOV.I $0, $1 が待っている!

🎯 やってみよう(編集不要) [STEP] ボタンを5回(または [PLAY] を)押して、Impが自分で自分の道を作りながら 0005 番地まで前進していく姿を観察しましょう!

1. 1984年に誕生した世界最小・最古の人工生命「Imp」

Step 16では、たった1行のコード『MOV.I $0, $1』を5サイクル連続で実行し、光る実行ポインタが 0000 ➔ 0001 ➔ 0002 ➔ 0003 ➔ 0004 ➔ 0005 番地へと、自分のクローンを敷き詰めながら前進していく様子を観察しました。

1984年5月、科学雑誌『Scientific American(日経サイエンス)』のコラムにおいて、計算機科学者 A. K. デュードニー(A. K. Dewdney)がCoreWarを世界に初めて紹介したとき、その記念すべき最初の生命体として登場したのがこの『Imp(インプ:小悪魔)』です。

第2章のStep 12で、私たちは「プログラムが死なずに生き続けるためには、JMP命令でループを作らなければならない」と学びました。しかし、このImpを見てください。『JMP』命令などどこにもありません! しかも行数はたったの1行(1ワード)です。通常なら、1行目を実行した次のサイクルには 0001 番地の空地(DAT #0, #0)に落ちて即死するはずです。なぜImpは死なないのでしょうか?

Cycle 1 (PC=0000): [0000] MOV.I $0, $1 ──(Copies self to 0001)──► [0001] MOV.I $0, $1
Cycle 2 (PC=0001): [0001] MOV.I $0, $1 ──(Copies self to 0002)──► [0002] MOV.I $0, $1
Cycle 3 (PC=0002): [0002] MOV.I $0, $1 ──(Copies self to 0003)──► [0003] MOV.I $0, $1
  "Just before my foot comes down on the next tile, I build the tile in mid-air!"

2. 空中ブランコの奇跡:「相対アドレス $0, $1」と「PC + 1」の完全同期

Impがたった1行で永遠に生き続けられる秘密は、「自己複製(MOV $0, $1)」と「CPUのプログラムカウンタの自然進行(PC + 1)」と「相対アドレッシング($)」の3つが、奇跡的なシンクロニシティ(同期)を果たしている点にあります。

コマ送りで解剖してみましょう。 1. Cycle 1(PC = 0000):0000 番地の『MOV.I $0, $1』が実行されます。この瞬間まで、1つ下の 0001 番地は踏めば死ぬ『DAT #0, #0』でした。しかし、このMOV命令が「自分自身($0=0000番地)」を「1つ下の箱($1=0001番地)」へコピーしたことで、0001 番地の中身が『MOV.I $0, $1』へと書き換わります! 2. その直後、CPUは1サイクルの処理を終え、プログラムカウンタ(PC)を自動的に「+1」進めて 0001 番地へ足を下ろします。 3. Cycle 2(PC = 0001):なんと、足を下ろした 0001 番地には、1サイクル前の自分が敷いたばかりの真新しい線路(『MOV.I $0, $1』)が待っています! そしてこの命令は相対番地($0, $1)で書かれているため、0001 番地で実行されると、今度は自動的に「0001番地($0)を 0002番地($1)へコピーする」命令として機能するのです!

まるで機関車が、自分のすぐ1メートル前方に新しいレールを敷きながら、そのレールの上へ進んでいくアニメーションのような構造です。そして800マスの円環メモリを一周すると、自分が最初に敷いたレールの上を再び走り続け、外敵に邪魔されない限り文字通り「永遠に」メモリ空間を巡回し続けます。

3. フォン・ノイマンの自己複製オートマトンと生物DNAとの深い共通点

実を言うと、1953年にワトソンとクリックが生物のDNAの二重らせん構造を発見するよりも前の1940年代後半、フォン・ノイマンはすでに「機械(プログラム)が自分自身を自己複製するためには、論理的に何が必要か?」という理論(自己複製オートマトン理論)を数学的に完成させていました。

ノイマンは、自己複製する存在には自分の設計図(コード)を2つの異なる方法で扱う仕組みが必要だと証明しました。 ① 設計図を「単なるデータとしてそのまま丸写し(転写)する」プロセス(生物におけるDNA複製/Impにおけるオペランド $0, $1 のデータコピー)。 ② 同じ設計図を「命令として実行し、新しい個体を組み立てる」プロセス(生物におけるリボソームでのタンパク質合成/ImpにおけるPCの移動と実行)。

地球上の生命が約40億年かけて化学分子(DNAと酵素)で実現したこの「記述データでありながら実行命令でもある」という自己複製の本質を、Impはノイマン型メモリ上の『MOV.I $0, $1』というわずか1ワード(3つの部屋)の中で完璧に体現しているのです。

🔒

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

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