L.Entisの日記: 8080 4
おいおい、お前らx86以前の石さわったことあるのか?
8008がx86の祖先といっていいなら、4004も祖先といってもいいくらい
かけ離れているぞ。
命令セット的にx86の祖先と言ったら、8086ぐらいが限界じゃない?
8008のことは良く知りませんが(8080も実際に触った事は無く豆知識程度ですが)、8080 は8086命令セットの「元」になっていたはずです。
Wikipedia を見ると、8008 も 8080 も命令セットが載っているので見れば分かりますが、8086 が開発される際には、8080 の命令セットを完全に包括する形で命令セットが作られていたはずです。(8080 のソフトウェア資産を活用できるようにするため)
つまり、バイナリレベルでの互換性はありませんが、8080 に存在する命令を、8086 の命令に置き換えることが出来、実行が出来るようになっているはずです。
Wikipedia の 8086 のページにもそのように書かれていますね。
8086は8080のアーキテクチャを16ビットに拡張し、乗除算などの命令を強化したCPUである。またデータバスも16ビットとなっている。ただし、8080とバイナリーレベルの互換性はない。開発にあたってIntelは、8080からの速やかな移行を最重点事項に置き、8080のアセンブラソースコードに一切の手を加えることなく再アセンブルするだけで、8086用のバイナリを生成する事が出来た[1]。
で、Wikipedia で 8008、8080 を見ると、8080 が 8008 の後継にあたるが命令の互換性はないということのようですね。
良く似てはいますが。
見た目で言えば、8086 と 8080 の違いより、8080 と 8008 の方が近いようにも感じます。
(前者は 16ビットCPUと8ビットCPUの違いもありますし)
と考えると、上のコメントを書いた人は、8086 と 80286 や 80386 をかけ離れているとは言わないのでしょうか?
系譜で言えば、8008 は先祖になるといっても良い様に見えますが。
(もっと厳密な命令セットで言えば 8080 でしょうけど、アーキテクチャは、286, 386, 486, 586, 686 で、もう別物と言っていいほど変化していますが)
8086 (スコア:1)
8080のXTHLに直截に対応する8086の命令はありません。8086の命令を組み合わせてXTHLを実現することは可能ですが,JavaVMの命令を8086の命令に変換することさえ可能であって程度の差でしかありません。
8086のレジスターが上下8ビット2本に割れるのは8080の置き換えを考えたがためと思われます。8080としてはレジスターを2本つなげて16ビットにして使うという方が適切でしょうけど。
Re:人による (スコア:1)
横レスです。
人、というか、その時の論点によって、
8086以前と以後でつながるかどうかが、決まると思います。
ただ、ふと思ったのですが、件の1647119氏 [srad.jp]が、
cp/mアプリを、ms-dos1.x や cp/m-86に移植するべく、
青春の日々を費やしてしまった長老であるとすれば、
彼の発言にも、深く頷ける部分があるのではないかと。
// 「技術史」みたいな見方をすれば、断絶は無いように見えますけどね
もっと単純に考えて良いのでは? (スコア:1)
x86で8086の命令セットを動かすことは出来ますが、8080の命令セットを動かすことは出来ません。だから8086と8080の間に断絶はあるけれど、8086からx86(現在開発中のものも含む)の間に断絶はない。故に8086はx86の直接の祖先ではあるが、8080はそうではない。こういうことだと思います。
ま、件の方はトランスレータ等のことまでは考えていなかったのでしょう。
# ま、「祖先」を家系図に載っている範囲内に留めるか、それとも原人とかのレベルにまで引っ張るかという考え方の違いってことで。
ここは自由の殿堂だ。床につばを吐こうが猫を海賊呼ばわりしようが自由だ。- A.バートラム・チャンドラー 銀河辺境シリーズより
当時として単純なコンバータとかありましたけどね、 (スコア:0)
8080のある命令と同等な8086の命令は多数ありますが(例:CALL)、複数の命令を組み合わせないと再現できない命令も多数あります(例:CZ)。
あるプロセッサの命令が別のプロセッサの複数の命令の組み合わせで再現できることは当たり前のことなので(でないとエミュレータなど作れない)、貴方の主張は誤りかと思います。