"言語とは、本来、機械を動かすものであった。人間が機械に歩み寄り、機械が言葉を持つ以前の時代を忘れてはならない。"
アセンブリ言語と聞くと、私たちはCPU命令との対応関係を思い浮かべる。
MOV
, JMP
, ADD
, CALL
… それらはすべて、機械に最も近い「人間の言葉」である。
だがそのアセンブリが「言語」として成立する以前、
機械は命令の対象でありながら、言葉を持たない存在だった。
この章では、ENIAC以前の世界、
すなわちアセンブリ誕生前夜の「言語なき命令」たちの時代を振り返り、
アセンブリという思想がいかにして生まれたかを探る。
ENIAC登場前:コードはハードウェアだった
1940年代以前、プログラムとは「命令列」ではなかった。
それは回路そのものであり、人間が構築する物理構造だった。
コンピュータとは「再配線される機械」だった
- 真空管やリレーを再接続し、演算順序を定義
- 条件分岐やループは存在しない(物理的に直列)
- 出力は紙テープ・パネル表示・パンチカード
→ 「プログラミング」とは、「回路設計」であり「手作業のハードウェア操作」だった。
プレENIAC時代の構造的特徴
1. 定常的計算に特化
- 数表の計算(弾道表、三角関数表など)
- 単発の演算(加算、減算、乗算、除算)
- 組合せではなく、命令の“配置”がすべて
2. タイムステップ単位での制御
ENIAC以前の機械(例:IBM自動計算機)では:
- 「時刻1でAに加算」
- 「時刻3でBに減算」
- 「時刻5で結果を印字」
→ 時間軸に命令を“並べる”構造であり、柔軟な分岐やループは不可
アセンブリの萌芽:順序と制御の再定義
コンピュータは、単に計算する機械から「命令を順に解釈する機械」へと進化する必要があった。
この進化の中で初めて、
「命令とはデータである」
「命令列は記述可能である」
という思想が現れる。
それが後にアセンブリへと繋がる、命令と記号の統一の萌芽である。
ENIACの登場と“プログラミング”の誕生
ENIAC(1945年、米陸軍弾道研究所)では:
- 18000本の真空管
- 再配線による「コード切替」が中心
- だが、命令コード(Operation Codes)とデータを数値で記述し始める
これにより:
- 命令が「再利用」可能に
- プログラムの「切替」が高速化
- 命令=データというメタ構造が生まれる
つまり、ENIACはアセンブリ以前の“プリアセンブリ”言語の原点だった。
最初のアセンブリ記法:EDVACとノイマン
ENIACの後継として設計されたEDVACでは、ジョン・フォン・ノイマンが提唱したアーキテクチャが導入される。
- 命令もデータも同じメモリ上に格納
- 制御構造が命令列で表現可能に
- 記述可能な“コード”が登場
ここから、
LOAD 1000
ADD 1001
STORE 1002
といった、人間可読な「擬似命令」が使われはじめる。
これが、現代アセンブリ言語の祖型である。
アセンブリという言語設計の革命
アセンブリは:
- 人間がCPUの「回路構造」を“命令の集合”として認識するための翻訳機であり、
- 同時に「物理的実行装置」に対して「言語的介入」を可能にする記述の詩法でもある。
それは、言語がハードウェアに近づいたのではなく、ハードウェアが言語を持った瞬間だった。
初期アセンブラとシンボルの導入
初期のアセンブリ記法では:
- ラベル(
LOOP:
)や命令(JMP LOOP
)が記述可能に - メモリアドレスの手動計算が不要に
- 複雑な手続きも記号で表現できるように
これにより、プログラミングは**“構造を持った意味記述”**として成立するようになる。
アセンブラは、単なる機械語変換器ではない。
それは、「構造を言語に写す写像装置」だった。
結語:アセンブリとは、言葉を持つ機械の最初の声である
ENIAC以前、計算機には命令がなかった。
ただのリレーと真空管、時間と配線、記録と手順。
そこから「命令」が生まれ、
「言語」が育ち、
「意味」が実行されるようになった。
アセンブリとは、
言語が物質に宿る最初の瞬間に咲いた、記述の花である。
"命令を持たない機械が、命令を得た瞬間。アセンブリとは、設計と実行をつなぐ最初の言語であり、最後の記号である。"