HOME
ACADEMY
LAB
RESOURCES
COREWAR
EN
/
JA
⚙️
☰
一覧
📖
説明を見る
6. 爆撃の仕組みを暴く:ドワーフ
ミッション一覧 (全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
進捗をリセット
🧬 一体型メモリ
📐 分割ビュー
📝 テキスト (RAW)
👁️ お手本観察モード([STEP] で観察)
[番地]
[命令 (Opcode)]
[A (左の値)]
[B (右の値)]
📦 データ領域 / 爆弾 (DAT)
0000
▼
MOV
■ DAT - データ / 停止 (実行すると消滅)
▼ MOV - コピー (AからBへ写す)
+ ADD - 加算 (AをBに足す)
- SUB - 減算 (BからAを引く)
+ MUL - 乗算 (BにAを掛ける)
+ DIV - 除算 (BをAで割る)
+ MOD - 剰余 (BをAで割った余り)
↺ JMP - ジャンプ (A番地へ移動)
↺ JMZ - 0ならジャンプ (B==0でAへ)
↺ JMN - 非0ならジャンプ (B≠0でAへ)
↺ DJN - Bを-1して非0ならAへジャンプ
❖ SPL - 分裂 (A番地に新プロセス生成)
◉ CMP - 比較・等しければ次行スキップ
◉ SEQ - 等しければ次行スキップ (A==B)
◉ SNE - 異なれば次行スキップ (A≠B)
◉ SLT - 小さければ次行スキップ (A<B)
• NOP - 何もしない (1サイクル通過)
#
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
$
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
0001
▼
MOV
■ DAT - データ / 停止 (実行すると消滅)
▼ MOV - コピー (AからBへ写す)
+ ADD - 加算 (AをBに足す)
- SUB - 減算 (BからAを引く)
+ MUL - 乗算 (BにAを掛ける)
+ DIV - 除算 (BをAで割る)
+ MOD - 剰余 (BをAで割った余り)
↺ JMP - ジャンプ (A番地へ移動)
↺ JMZ - 0ならジャンプ (B==0でAへ)
↺ JMN - 非0ならジャンプ (B≠0でAへ)
↺ DJN - Bを-1して非0ならAへジャンプ
❖ SPL - 分裂 (A番地に新プロセス生成)
◉ CMP - 比較・等しければ次行スキップ
◉ SEQ - 等しければ次行スキップ (A==B)
◉ SNE - 異なれば次行スキップ (A≠B)
◉ SLT - 小さければ次行スキップ (A<B)
• NOP - 何もしない (1サイクル通過)
<
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
<
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
0002
↺
JMN
■ DAT - データ / 停止 (実行すると消滅)
▼ MOV - コピー (AからBへ写す)
+ ADD - 加算 (AをBに足す)
- SUB - 減算 (BからAを引く)
+ MUL - 乗算 (BにAを掛ける)
+ DIV - 除算 (BをAで割る)
+ MOD - 剰余 (BをAで割った余り)
↺ JMP - ジャンプ (A番地へ移動)
↺ JMZ - 0ならジャンプ (B==0でAへ)
↺ JMN - 非0ならジャンプ (B≠0でAへ)
↺ DJN - Bを-1して非0ならAへジャンプ
❖ SPL - 分裂 (A番地に新プロセス生成)
◉ CMP - 比較・等しければ次行スキップ
◉ SEQ - 等しければ次行スキップ (A==B)
◉ SNE - 異なれば次行スキップ (A≠B)
◉ SLT - 小さければ次行スキップ (A<B)
• NOP - 何もしない (1サイクル通過)
$
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
$
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
0003
❖
SPL
■ DAT - データ / 停止 (実行すると消滅)
▼ MOV - コピー (AからBへ写す)
+ ADD - 加算 (AをBに足す)
- SUB - 減算 (BからAを引く)
+ MUL - 乗算 (BにAを掛ける)
+ DIV - 除算 (BをAで割る)
+ MOD - 剰余 (BをAで割った余り)
↺ JMP - ジャンプ (A番地へ移動)
↺ JMZ - 0ならジャンプ (B==0でAへ)
↺ JMN - 非0ならジャンプ (B≠0でAへ)
↺ DJN - Bを-1して非0ならAへジャンプ
❖ SPL - 分裂 (A番地に新プロセス生成)
◉ CMP - 比較・等しければ次行スキップ
◉ SEQ - 等しければ次行スキップ (A==B)
◉ SNE - 異なれば次行スキップ (A≠B)
◉ SLT - 小さければ次行スキップ (A<B)
• NOP - 何もしない (1サイクル通過)
@
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
#
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
0004
+
ADD
■ DAT - データ / 停止 (実行すると消滅)
▼ MOV - コピー (AからBへ写す)
+ ADD - 加算 (AをBに足す)
- SUB - 減算 (BからAを引く)
+ MUL - 乗算 (BにAを掛ける)
+ DIV - 除算 (BをAで割る)
+ MOD - 剰余 (BをAで割った余り)
↺ JMP - ジャンプ (A番地へ移動)
↺ JMZ - 0ならジャンプ (B==0でAへ)
↺ JMN - 非0ならジャンプ (B≠0でAへ)
↺ DJN - Bを-1して非0ならAへジャンプ
❖ SPL - 分裂 (A番地に新プロセス生成)
◉ CMP - 比較・等しければ次行スキップ
◉ SEQ - 等しければ次行スキップ (A==B)
◉ SNE - 異なれば次行スキップ (A≠B)
◉ SLT - 小さければ次行スキップ (A<B)
• NOP - 何もしない (1サイクル通過)
#
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
$
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
0005
↺
JMP
■ DAT - データ / 停止 (実行すると消滅)
▼ MOV - コピー (AからBへ写す)
+ ADD - 加算 (AをBに足す)
- SUB - 減算 (BからAを引く)
+ MUL - 乗算 (BにAを掛ける)
+ DIV - 除算 (BをAで割る)
+ MOD - 剰余 (BをAで割った余り)
↺ JMP - ジャンプ (A番地へ移動)
↺ JMZ - 0ならジャンプ (B==0でAへ)
↺ JMN - 非0ならジャンプ (B≠0でAへ)
↺ DJN - Bを-1して非0ならAへジャンプ
❖ SPL - 分裂 (A番地に新プロセス生成)
◉ CMP - 比較・等しければ次行スキップ
◉ SEQ - 等しければ次行スキップ (A==B)
◉ SNE - 異なれば次行スキップ (A≠B)
◉ SLT - 小さければ次行スキップ (A<B)
• NOP - 何もしない (1サイクル通過)
$
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
$
# - 即値 (ただの数値)
$ - 直接参照 (相対番地)
@ - 間接参照 (Bが指す先)
< - 前減算間接 (Bを-1して参照)
> - 後加算間接 (参照後にBを+1)
* - A間接参照 (Aが指す先)
{ - A前減算間接 (Aを-1して参照)
} - A後加算間接 (参照後にAを+1)
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で同期
↺ RESET
<<
<
PLAY
STEP >
>>
P1:
0
P2:
0
CYC:
0