COREWAR

/
Step 8: 足す「数値(A)」を変えてみよう
🎯0001番地のB値を 5 にする(0/5)

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

加算オペランド(Δ)の制御と離散ステップ量の設計

左の部屋(Aフィールド)の数値を変えることが、計算の進行速度やポインタの歩幅をどう変えるか

#Additive Delta#Source Operand#Immediate Constant#Rate of Change#Step Stride
🔬Step 8: 足す「数値(A)」を変えてみよう

ADD 命令では、 - A(左の値) が「いくつ足すか(数値)」 - B(右の値) が「どこの箱に足すか(番地)」を表します。

現在、0000 番地は ADD.AB #1, $1 となっており、1つ下の箱(初期値 0)に 1 しか足されません。

🎯 やってみよう 黄色く光っている 0000 番地の A(左の値) を #1 から #5 に書き換えて [STEP] を押し、0001 番地のデータ箱のB値を 5 にしましょう!

1. 「いくつ変化させるか(変化量 Δ)」を司るAフィールド

Step 8では、0000 番地の『ADD.AB #1, $1』の左側の数値(Aフィールド)を『#1』から『#5』へと書き換え、1回のステップで 0001 番地のデータ箱が『0』から一気に『5』へと増えることを確認しました。

数学や物理学では、ある状態から次の状態へ変化するときの「増分(変化量)」をギリシャ文字の $\Delta$(デルタ)で表します。CoreWarの『ADD.AB #Δ, $Target』という命令において、左の部屋(Aフィールド)に書かれた即値『#Δ』は、まさに1クロックサイクルあたりに対象の変数をどれだけ進めるかという「変化の速度(レート)」を決定するパラメータです。

もし A が『#1』であれば、対象の数値は 1 サイクルにつき 1 ずつしか増えません。しかし A を『#5』に変えれば、同じ 1 サイクルという時間コストで 5 倍の量を一気に加算することができます。

Before: ADD.AB #1, $1  ──► 1 Cycle = +1 increment (Slow linear step)
After : ADD.AB #5, $1  ──► 1 Cycle = +5 increment (5x stride in the same 1 cycle!)

2. 計算コスト(O(1))の一定性とハードウェア加算器

人間の頭で暗算をするとき、「0 + 1」よりも「347 + 589」のほうが少しだけ時間がかかります。また、指を折って数えるなら、1を足すより5を足すほうが5倍の時間がかかります。しかし、コンピュータのCPU(ALU)にとっては、『#1』を足すのも、『#5』を足すのも、『#392』を足すのも、かかる時間は全く同じ「たった1クロックサイクル」です。

なぜなら、CPU内部の加算器(Adder)は、2進数のすべての桁(ビット)を電子回路で一斉に計算するように設計されているからです。これを計算機科学では「定数時間演算($O(1)$:オーダー・ワン)」と呼びます。

1サイクルという限られた寿命の中で戦うCoreWarにおいて、「1サイクルでどんな数値でも加算できる」という性質は極めて重要です。後ほど学ぶ爆撃機(Dwarf)や索敵機(Scanner)では、このAフィールドの数値を『#4』や『#8』や『#200』にチューニングすることで、1回のループでメモリ空間を何マス飛び越えて攻撃するかを自在にコントロールすることになります。

3. 命令の中の定数(即値)とデータ箱の変数の協調

この2行のプログラム『ADD.AB #5, $1』と『DAT.F #0, #0』を改めて眺めてみましょう。 1行目の『#5』は、命令の中に直接埋め込まれた「定数(Constant:変化しない決まった数)」です。一方、2行目の『DAT』のBフィールドは、計算結果を受け止めて変化する「変数(Variable:書き換わる器)」です。

あらゆるコンピュータ・プログラムは、この「命令側に書かれた定数パラメータ」と「データ側に用意された変数スロット」の組み合わせによって成り立っています。次は、定数(A)はそのままにして、「どの変数箱を狙うか(Bの番地)」を切り替える実験へ進みましょう。

🔒

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

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