私は、古い6502プロセッサが、特に任天堂エンターテイメントシステムでどのように動作するかを理解しようとしています。私を混乱させ続ける一つのことは、すべてのアセンブリ命令がRAM-RAMコマンドを処理するように見えるので、システムが関連するデータをROMからRAMに移動する方法です。例えば、ゲームがマリオの敵をロードする必要があった場合、CPUはどのようにロードして関連する領域を特定し、ロードしますか?一度それがRAMに入っていれば私はまともな理解を持っていますが、それは私が理解していないRAMにデータを取り込んでいます。ありがとう!6502プロセッサは、ROMとRAMの間でどのようにデータを転送しますか?
答えて
典型的な6502システムでは、ROMはプロセッサのアドレス空間にマップされます。プロセッサがどのアドレスにアクセスしようとしているかに応じて、アクセスはRAM、ROM、または何も制御レジスタのようなものになります。メインボードには、通常、上位アドレスビットを見て、対応するRAMまたはROMチップのチップセレクトラインをイネーブルにするロジックがあります。プロセッサは違いを知らせることはできません.ROMへの書き込みは無視されます。
私はあなたの質問を完全に理解しているとは言えませんが、以下のように正しい方向に向けるのに役立ちます。
システムのメモリマップを理解する必要があります。 「ニンテンドーエンターテイメントシステムのメモリマップ」をGoogleが検索した結果、多くの人々の間でこの有益な検索ページが見つかりました。 https://fms.komkon.org/EMUL8/NES.html RAMとROMであることを確認するのに役立ちます。あなたのプログラムのどこかに、カートリッジROMからデータをロードするコマンドがなければなりません。
RAM-RAMコマンドそのものはありません。アドレッシングモードについては、http://www.emulator101.com/6502-addressing-modes.htmlを参照してください。
LDA $C042 STA $00F5
は全体の形状定義を移動するように、彼らはへの可能性があります:すべてのデータはそうのように見えるかもしれません(たとえば$ 00F5)RAMへの($ C042を言う)ROMからバイトを移動するために、レジスタを介して移動させ、より複雑なアドレッシングモード、Absolute Indexed、またはIndexed Indirectを使用することができます。ロード命令は、フェッチされているデータを格納するROMアドレスで以前にロードされたRAMアドレスを参照するため、後者はあなたを混乱させる可能性があります。
適切なデータがどこからロードされ、どこに格納されるかは、プログラム(またはプログラマ)が把握しておく必要があります。
- 1. gccのRAMとROMのセクション間のlong_calls
- 2. RAM&ROMメモリ・セグメント
- 3. どのようにコンピュータ間でSmalltalkファイルを転送しますか?
- 4. "mwArray *"と "mxArray *"の間でデータを転送するにはどうすればよいですか?
- 5. 流星とモンゴの間のデータ転送はどのように安全ですか?
- 6. RAMへのUnixファイル転送
- 7. クラス間でArrayListsをどのように転送できますか?
- 8. Laravelでページ間のデータ転送を行うにはどうすればよいですか?
- 9. プロセッサはどのようにしてデータをメモリカードに書き込みますか?
- 10. 転送プロトコルはどのように機能しますか?
- 11. セグのないテーブルビュー間でデータを転送しますか?
- 12. アンドロイドデバイス間でデータを転送
- 13. ストーリーボード間の変数からデータを転送しようとしたときにエラーが発生しました
- 14. 2台のコンピュータ間でデータを転送するにはどうすればよいですか?
- 15. PCI ROMはどのようにシャドーされていますか?
- 16. イーサネット経由でデータを転送するために使用するARMプロセッサはどれですか?
- 17. C++モジュール間のデータ転送
- 18. Pythonファイル間のデータ転送
- 19. swift3コントローラ間のデータ転送
- 20. Node.jsスクリプト間のデータ転送
- 21. モジュール間のデータ転送 - Verilog
- 22. Java/Servletと.NETの間でセッション情報をどのように転送しますか
- 23. Azure RAMメモリ転送速度
- 24. ローカルサーバーとAWSサーバー間のデータ転送
- 25. オペレータ間のエアフローとデータ転送
- 26. iphoneとBTデバイス間のデータ転送
- 27. サーブレットとJSPの間でデータを転送する方法は?
- 28. アンドロイド内の2つのアクティビティ間でオブジェクトがどのようにデータを保持/転送するのか?
- 29. 2つのレールサーバー間でデータを転送
- 30. nivのuiviews間でデータを転送
プロセッサは、RAMまたはROMにアクセスしているかどうかは完全に認識されません。書かれる前にRAMに格納されているアドレスから読んだり決してROMに書き込もうとしないようにすることはプログラマの責任です。単純なシステムでは、固定アドレスにマップされるなど、複雑ではありません。 –
プログラマはアドレスをアセンブリコードにハードコードします。 Nintentoアーキテクチャの正確な内容はわかりませんが、ROMはおそらくアドレス空間の固定された場所にマップされています。これは、[Retrocomputing.SE]によく似た概念的な質問のタイプです。 –
ほとんどのプロセッサは、ROMとRAM、周辺機器などのメモリマップは何の手がかりも持っていません。これを知っているのはプログラマです。いくつかの例外があります。周辺アクセスが命令セットに設計されているものとcortex-mのようにCPUが設計されており、アドレスバンドがコード用、データ用と周辺用の両方に設計されていますがチップベンダーはこれを賞賛し、プログラマーは実際にどこにあるのかを実際に知ることができます。 6502、8086、z80、etcプログラマまで100%。 –