5

これは非常に漠然とした質問であることは承知しており、これは実際にはハードウェアに関連するものであるため、プログラマーにとっては良い質問ではないかもしれませんが、このサイトに適したアセンブリ/マシンコードが登場すると思います.

だから私が疑問に思っているのは; 6502 プロセッサを想像してみてください。いくつかのレジスタ、命令セット、および一定量のメモリへのアクセスがあります。次に、任意の解像度の LCD 画面があるとします。この画面に表示される内容はどのように決定されますか? どの位置のどのピクセルにどの色が割り当てられているかは、どのように決まるのでしょうか? たとえば、画面には常に、6502 のアキュムレータの値、x 位置がレジスタ x に格納され、y 位置が y に格納されたピクセルが表示されますか? それとも、マシンごとに解釈が異なるのでしょうか?

誰かが JavaScript 6502 エミュレーターを作成しました。デバイスは、200 ドルから始まるメモリ位置にあるピクセルの値を表示します。たとえば、次のようになります。

LDA #$08 
STA $200 

x:0, y:0 の位置にピンクがかったピクセルが表示されます。

LDA #$01
STA $205

x:5, y:0 の位置に白いピクセルが表示されます。

ただし、NES を見ると、専用の PPU があり、画面上の特定の領域に特定のピクセルを特定の値で表示します。

それで、それはどのように機能しますか?すべてのマシン (つまり、Apple II、C64、NES) によって解釈が異なるのでしょうか、それとも解釈方法にある種の一貫性がありますか?

実際のところ、Apple II 用にコンパイルされたプログラムが何らかの形で C64 で実行されたらどうなるでしょうか? 機械は指示を読めるはずですよね?

4

6 に答える 6

6

グラフィックがどのように表示されるかはマシンに依存するため、明確な答えはありません。たとえば、C64 では、グラフィックス ハードウェアは通常のアドレス空間にマップされていたため、画面に文字を出力するには、メモリの特定の部分に書き込む必要がありました。グラフィックスを表示したい場合は、ディスプレイ ハードウェアのレジスタに書き込むことによってモードを切り替える必要があり、マップされたメモリも変更される可能性があります。このため、C64 の通常アクセス可能なメモリは 64KB を下回っていました。ただし、メモリ マッピングをオフにすると、グラフィックス メモリのにあるすべてのメモリにアクセスできるため、ディスプレイのないマシンになります。

ただし、PC には VGA、EGA、Hercules カードなどがあります。これらのカードは、特定のポートにアクセスし、これらのポートを介してコマンドを送信することによって書き込まれます。まったく異なるアプローチ。ただし、これはシステム設計上の決定であり、CPU には依存しません。

実際のところ、Apple II 用にコンパイルされたプログラムが何らかの形で C64 で実行されたらどうなるでしょうか? 機械は指示を読めるはずですよね?

さて、答えはかなり明確です。たとえ命令セットが同じであったとしても (Apple がどの CPU を持っていたかはわかりません)、ハードウェアの詳細が異なるため、クラッシュする可能性が最も高くなります。

于 2013-06-15T22:22:09.597 に答える
5

プロセッサ自体は、物事の表示を直接処理しません。ディスプレイ (存在する場合) がどのように使用されるかは、マシンによって異なる可能性がある他のハードウェア コンポーネントによって異なります。あなたが言うように、NES には PPU があり、C64 には VIC があり、エミュレーターには別のものがあるかもしれません。

はい、CPU が同じ場合、命令は同じになりますが、実行可能ファイル形式、ハードウェア周辺機器、メモリ レイアウト、OS/ROM サービスなどが異なるため、プログラムはおそらく実行されません。

于 2013-06-15T18:09:15.130 に答える
4

これは、システムに非常に固有です。ビデオカードやグラフィックシステム、またはあなたがそれを呼びたいものは何でも、どこかのメモリのビットまたはビットのセットを取り、それをビデオの信号に変換します. ディスプレイへのインターフェイスは、標準のテレビ入力、vga、dvi、hdmi などです。メモリからこれらのビデオ信号にアクセスできる、一般的なビデオ カードや一般的なビデオ カードのクローンなどがあります。それを持ってプログラムします。

画像のサイズ、X x Y ピクセル、色数、色ごとのピクセル数 (プログラム可能な場合) は、誰かがプログラムしなければならないものであり、デフォルトがある場合はそれを使用する必要があります。使用しているエミュレーターは、一般的な 6502 ビデオ システムをエミュレートしている可能性がありますが、必ずしも 6502 自体に関連するものではありません。ビデオが統合されたチップまたはサポート チップを備えた 6502 システムがいくつかありましたが、実際には 6502 プロセッサ自体から分離されており、プロセッサが命令を実行し、メモリ インターフェイス、メモリ、およびコア プロセッサの一部ではないその他の周辺機器にアクセスします。しかし...周辺機器...

したがって、特定のシステム、このシミュレーター、C64 などを調べ、それぞれを個別に調べて、ビデオ システム、制御レジスタ、ビデオ メモリがプロセッサのアドレス空間にどのようにマップされるかなどを理解する必要があります。

于 2013-06-15T18:09:22.803 に答える
3

当然、これはハードウェアによって大きく異なりますが、ある種の画面にデータを表示する一般的な方法は、特定のメモリ領域から読み取って画面に表示するチップがあることです。表示内容を変更するには、メモリ領域に書き込むだけで、チップは次の表示サイクルで新しいデータを表示します。

私は 8 ビット Ataris に精通しています。表示に使用されるメモリ領域は、グラフィック モードと使用可能な RAM によって異なります。そのため、ゼロ ページのどこかに保存されている画面の開始点へのポインターがあります。

さまざまなハードウェア (画面やキーボードなど) にアクセスする方法はコンピューターのブランドによって異なるため、あるコンピューター用のプログラムを別のコンピューターで実行することはできません。ハードウェアとまったくやり取りしないプログラムだけが移植可能ですが、それはまったく役に立たないプログラムです。

于 2013-06-15T18:10:18.230 に答える