今回は2冊同時です。アイキャッチ画像左は、インテルの iAPX86,88,186 and 188 User’s Manual、1983年。右は「マイクロコンピュータ ソフトウエア技術」吉田著、マイテック 1979年です。前回16bit話だったので、今回は時代を遡って8ビットから16ビットへの移行期について。
※『Literature Watch Returns (L.W.R.)』の投稿順 index はこちら
インテルの方は正確に言えば User’s ManualでもHardware Referenceです。多分別にSoftware Referenceというものもあった筈。86系の初期プロセッサである8086, 8088, 80186, 80188の4機種の主にハードウエアについてのマニュアルです。多分、最近の人は知らないと思いますが、当時のインテルは数字の型番以外に iAPXチョメチョメ という名で自社の製品をネーミングし、プロモートしてました。例えば、インテルが8086と近い時期に力を入れていた最初期の32ビットプロセッサは、
iAPX432
という名前でした(デバイスとしての型番は43201など<3チップ構成だったから>だったと記憶。)432は多分インテルにしたら「黒歴史」というやつ(手元に資料が無さそうなのが残念。もし出てきたら古文書で扱いたいです。)非常に「野心的」でその後のプロセッサ設計に影響を与えたデバイスでした(個人の感想です)が、性能的にもビジネス的にも見事に失敗(個人の感想です。)
もう一冊は、三菱重工の吉田さんという方が書かれた8080と8085に関する教科書ですな。私は大学在学時にこれで8080のアセンブラ(いや機械語か)を学びました。「電子計算機応用」という科目で2単位。単なる自慢(40年前の)だけれど90分の試験を15分(実際は最初の5分で終えたのだけれどイヤミなので誰か立つまで座ってまっていた)で終えて、結果はAでしたぜ。
2冊ならべたのは、こと80系というか86系については、8ビットから16ビットへの「段差」は少なかったことを書いておくため。この辺は6800から68000やZ80からZ8000と違うところ。その昔は皆知っていたことですが。
端的に示すと、以下のレジスタセットの比較を見るよろし(よる年波で嘘を書くとまずいので、今回、上記のご本を掘り起こして確認したので間違ってない筈。)小さ目のハコは8ビット(細かい横目盛が1ビット幅)、横倍幅のハコは16ビットです。左が8ビットの8080と8085(レジスタ的には同じ)と右が16ビットの8086と8088(レジスタ的には同じ)です。
対応するもの同士を並べて書いてあるので、8ビット機の雰囲気を限りなく残しながら16ビット機にしたことが感じられるのではないかと思います。細かいことを言えば、8080と8085のHLレジスタに対応するのが8086と8088のBXレジスタではないか(それでいくとBCにはCX、DEにはDXを対応づける)というツッコミはありなのですが、上記の順番はインテルのマニュアルに書いてある順番を尊重です。
上記をみると、データ処理部分では8086は8080に対して僅かALの8ビット分を拡張しただけ。メモリアドレスを指すための「ほぼ」専用レジスタは8080がSP(スタックポインタ)のみだったのに対して、8086ではBP(ベースポインタ)と2本のインデックスレジスタ(SIとDI)の合計3本を追加。8086ではそして悪名高いセグメントレジスタとして、DS, SS, ES, CSの4本を新設。
また、8ビット時代にはPCと呼ばれていたプログラムカウンタが、16ビットになったらIP(インストラクション・ポインタ)と呼び名が変わっています。これは、8086のセグメンテーションでは、CS:IP の2本あわせたものががPCに対応するから、という説明だったような、そうでなかったような。。。
雰囲気は似せつつ(インテルは、実際に8080のアセンブラソースを8086のアセンブラソースに変換する「コンバータ」なるものを売っていたくらい。売れたかどうか知らんけど。多分売れなかった?)、微妙に名前を変えて新味を出している感じがします。
とくに条件フラグのところの「コンパチビリティ」はいじらしいくらいです。若者(いや中年か)は以下を御覧じろ(年寄りは知っているよね。)
下8ビット部分、8080/8085と8086/8088は同じです(フラグの名前は変わっているけれど、意味はまったく同じ。)86/88では、16ビットに幅を広げ、追加した上の8ビットの下4ビットに新たなフラグを追加しております。
このイメージが今のインテルのプロセッサまで延々と引き継がれることになろうとは、その当時は思いもしませんでしたな(分かったら予言者だな。)