1

簡単な 8088 エミュレーターを書くことを考えています。しかし、8088 コアをビデオ サブシステムに接続する方法がわかりません。

メインループについて考えています:

while (TRUE)
{
   execute_cpu_cycles_per_scanline() ; 
   paint_scanline() ; 
}

この方法は、CPU とグラフィックスのエミュレーションに適していますか? 他の方法はありますか?CPU とビデオに異なるスレッドを使用できない理由を説明します。QEMU などのエミュレータ (x86) でこの問題に対処する方法。

ありがとう。

4

1 に答える 1

0

非常に多くの x86 プロセッサがあり、時間の経過とともに進化するにつれて、クロック周期への命令はいくぶん非決定論的になりました。8088や6502などの古いCPUの場合、文書化されていて正確であれば、各命令のクロックサイクルを単純に数えることができ、シミュレートされたクロックサイクルの数がスキャンライン描画時間または割り込み間隔などと同じかそれ以上の場合その後、あなたが提案していることを行うことができます。たとえば、mameや他のエミュレーターが基本的にどのように動作するかを見ると、命令クロックサイクルを使用して経過時間を決定し、そこからペリフェラルでエミュレートされた時間を管理します。

たとえば、qemu で Linux を実行したい場合、命令の実行によって時間を決定するエミュレートされたクロックは必要なく、そのクロックをハードウェア システム クロックと同期させたいとします。同様に、シミュレートされたものではなく、実際のハードウェアのリフレッシュ レートに基づいてリフレッシュ レートを同期することもできます。

つまり、これらは両極端です。どちらか一方、またはその間の何かを行う必要があります。

于 2013-08-12T20:41:40.080 に答える