COREWAR

/
Step 11: 箱を丸ごとコピーする命令「MOV」
🎯0003番地のB値を 99 にする(0/99)

ミッション一覧 (全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 11 OF 30第2章:基本命令と自律プログラムの構築⏱ 読了目安:約5分
📖 講義ノート:この実験で起きているコンピュータ科学と人工生命の原理

データ転送命令「MOV」の本質——「移動」ではなく「複製と上書き」

なぜ元のデータは消えないのか? メモリ構造体を1サイクルで丸ごと転写するブロックコピーの威力

#MOV (Move / Copy)#Non-Destructive Read#Destructive Write#Instruction Modifier (.I)#Memory Transcription
🔬Step 11: 箱を丸ごとコピーする命令「MOV」

MOV(ムーブ / コピー) は、CoreWarで最も重要な命令です! - A(左の番地): コピー元の箱の場所 - B(右の番地): コピー先の箱の場所

現在、0001 番地(1つ下の箱)には宝物データ DAT #0, #99 が入っています。 0000 番地の MOV.I $1, $2 は、「1つ下の箱を、2つ下の箱(0002番地)へ丸ごとコピーする」という意味です。

🎯 やってみよう 0000 番地の B(右の番地) を $2 から $3(3つ下の 0003 番地) に変更し、[STEP] を押して宝物データ(99)を 0003 番地へコピーしましょう!

1. アセンブリ最大の誤解:「MOV」は移動(Move)ではない!

Step 11では、CoreWarにおいて最も使用頻度が高く、かつ最も重要な命令である『MOV(ムーブ)』を使い、0001 番地にある宝物データ(DAT #0, #99)を3つ下の 0003 番地へと送り込みました。

ここで、[STEP] を押した後の 0001 番地(コピー元)と 0003 番地(コピー先)の両方をよく見比べてください。0003 番地に新しく『99』が現れた一方で、コピー元である 0001 番地の『99』も消えずにそのまま残っていますね!

英語の「Move(移動する)」という言葉から、多くの初心者は「0001番地からデータがいなくなって、0003番地へ引っ越す」と想像します。しかし、初期のCPU設計者が名付けた『MOV』という命令の実際の動作は、移動ではなく「Copy(複製:コピー元の内容をコピー先へ転写して上書きする)」なのです。

Before [STEP]:
  [0000] MOV.I $1, $3
  [0001] DAT.F #0, #99  ──(Non-Destructive Read)──┐
  [0003] DAT.F #0, #0   ◄──(Destructive Overwrite)─┘

After [STEP]:
  [0001] DAT.F #0, #99  (Original remains intact!)
  [0003] DAT.F #0, #99  (Exact clone created at destination!)

2. 「非破壊読み出し」と「破壊的書き込み」の法則

コンピュータのメモリ(RAM)には、2つの絶対的な物理法則があります。 1つ目は『非破壊読み出し(Non-Destructive Read)』です。メモリの箱を開けて中身を読み取っても、元の箱のデータは絶対に減ったり消えたりしません。だからこそ、1つのテンプレート(宝物データや爆弾データ)を 0001 番地に置いておけば、そこから何百回でも無限にコピーを作ってばら撒くことができます。

2つ目は『破壊的書き込み(Destructive Write / Overwrite)』です。コピー先の箱(今回の 0003 番地)に新しいデータが書き込まれると、そこに元々入っていた古いデータや命令は跡形もなく押し潰されて消滅し、新しいデータに置き換わります。

CoreWarにおける「攻撃」も「繁殖」も、すべてこの2つの法則から生まれます。自分の『DAT(データ箱)』を非破壊読み出しして、敵のプログラムが書かれている番地へ破壊的書き込み(MOV)すれば、敵の命令はDATに上書きされて破壊されます。逆に、自分自身の命令コードを空地へMOVすれば、自分が2つに増える(自己複製)のです。

3. 修飾子「.I(Instruction)」が持つ丸ごとコピーの特権

今回の命令『MOV.I $1, $3』についている『.I』という修飾子に注目してください。これまでの『.AB』は「Aの部屋の数字だけをBの部屋へ送る」という部分的な操作でした。 しかし、MOV命令だけに許された最強の修飾子『.I(Instruction:命令全体)』を使うと、「命令の種類(Opcode)・修飾子・Aの記号と数値・Bの記号と数値」という箱の中の3つの部屋すべてを、たった1サイクルで丸ごとコピー先へ転写することができます!

つまり『MOV.I』とは、単なる数値のコピーではなく、「メモリの箱(細胞)そのものを丸ごとクローン複製する命令」なのです。この『MOV.I』の仕組みを心に留めておいてください。第3章で、この命令が文字通り「生命」へと化けます。

🔒

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

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