3

現在、Java で NES エミュレーターを作成しています。いくつかの小さな問題を除いて、私の 6502 コアは 99% 動作します。問題は、私は NES 用に 6502 をエミュレートしているということですが、PS1、N64、または DOS のようなものに興味を持ったことはありません。前述のシステムのように、単純な 2D スプライトを画面に描画する以上のことができるコンソール/システムをエミュレートしたいと常に考えていました。

私が聞きたいのは、x86 プロセッサのようなものを 6502 と比較してエミュレートするのが難しい理由は何ですか? 私が思いつく唯一のことは、巨大な x86 命令セットであり、x86 エミュレーターは、コードの読みやすさではなく、効率性のためにもう少しプログラムする必要があるということです。DosBox のソース コードを調べたので、この質問をしています。そこにある 6502 オープン ソース エミュレータのほとんどと比較すると、DosBox の x86 コアのソースは、リモートで理解することすらできません。プロセッサがオペコードのリストを検索してそれらを体系的に実行するだけなのに、なぜ複雑さにこれほど大きな違いがあるのでしょうか?

4

2 に答える 2

2

あなたが言及したように、x86にはかなり広範な命令セットがあります。6502 のような 5 つのレジスタと 50 のいくつかの奇妙な命令を備えた小さな 8 ビット マイクロプロセッサと、x86 のような CPU をサポートする粗悪で古くなった CISC、32 ビット、マルチユーザー OS との間には、単に世界の違いがあります。

x86 プロセッサは、次の理由でより複雑です。

  • CISC は、多くの命令が多くのサイクルを必要とする複雑なことを行うことを意味します。

  • FPUをサポートする傾向があります

  • マルチレベルのキャッシュを持っている

  • プリフェッチ入力キューを持つ

  • 多くの下位互換性をサポートしています

  • ページングのサポート

  • 複数の特権レベル

于 2013-07-28T20:09:13.293 に答える