NOP 命令の誕生
目次
PDP-1 の NOP 命令
「NOP命令と都市伝説」の著者の方は、PDP-1 が最初に NOP を明記したコンピューター、と考えています。
調べると、1961年に発行されたマニュアルに、確かに nop 命令が載っています。
PDP-1 は、最初の納入先に納められたのが 1960年11月です。これをもって著者の方は「1960年にはじめて明記された」と考えているのですが、マニュアルは 1961 年発行です。本当に 1960年に存在したのでしょうか?
当時のコンピューターは非常に複雑なもので、持ってきて設置して終わり、と言うわけにはいきません。この後検収作業があり、完了して正式納入となったのは 1961年4月です。この間、マニュアルが作られていなかった可能性だってあります。
逆に、1959年12月にはプロトタイプを公開しています。この時点ですでにマニュアルがあった可能性もあります。
と言うわけで調査。
1960年4月のマニュアルを見つけました。
しかし、このマニュアルの中には NOP 命令は存在していません。
ややこしいのですが、「何もしない命令」が存在していないわけではないです。ただマニュアルに書かれていないだけ。
後で詳細を書きますが、「何もしない」ことをわざわざ保証することの大切さに気付いていないのです。
1960年から1961年の間にこれに気づいたことになります。では、なぜ重要だと考えるようになったのか? これが、謎を解く鍵のように思います。
もしかしたら、F15 と F15B の間に F15A があった可能性もある。今のところ該当資料が見つからないので、可能性の言及だけにとどめておく。
NOP の誕生
さて、話は TX-0 に戻ります。
1959年に、TX-0 の大改造が提案されました。
この際、opr 命令の bit 4,5 と、bit 6-8 の機能を再編し、bit 4-8 の大きなビットフィールドを作ろう、という提案が出ます。
再編する、とはいっても出来るだけ互換性を持たせるため、bit 4,5 と bit 6-8 の組み合わせによる、マトリクスを作っています。
ここで、上から3列目、bit 4,5 が 10 のところが、従来命令をそのまま残した互換部分です。
もともと、bit 6-8 を使うときは、bit 4,5 を 10 にする決まりでしたからね。
他の場所でも、別の個所から移行されたり、新設された命令など、他にも命令が入っている個所もあります。
そして、それ以外の空いた部分は、今後命令を追加するための拡張用となっています。
さて、最初の改造は 1960 年7月ごろ行われたようです。
7月に、新しいコード体系をまとめた文書が発行されています。
先ほどの表とは、縦と横が入れ替わっていますし、表記方法も変わっています。(クリックで全体表示します)
しかし、基本的には同じもので、計画段階ではなく「実装された」結果を示しています。
この時の実装は非常に巧妙なもので、互換性を完全に保ったまま、機能を拡張できる余裕を作り出しました。
表記方法が変わったので説明すると、上に QD0~QD4 と書かれているのが、bit 4,5 の値。
縦に 0~7が並んでいるのが、bit 6~8 の値です。
注目すべきは、もちろん QD0 - 0 に書かれた「NOP」の文字。
もちろん、No OPeration (なにもしない)の意味です。
他の部分には - (ハイフン) が入っている場所がありますが、これらは「未実装」であることを意味します。
未実装だっておそらく何もしないのに、わざわざ QD0 - 0 だけ「何もしない」と明示しているのです。
恐らくは、これは世界で最初に公式に示された NOP の文字。
すでに書きましたが、TX-0 は 6bit で1文字を表していました。そして、アキュムレータは 18bit でした。
つまり、アキュムレータには3文字が同時に入ります。
このため、アセンブラのニーモニックはすべて3文字で表現されています。
NOOP ではなく、NOP と表記されているのは、このためです。