964 Stimmen

Wie funktionieren die Emulatoren und wie werden sie geschrieben?

Wie funktionieren die Emulatoren? Wenn ich NES/SNES- oder C64-Emulatoren sehe, erstaunt mich das.

http://www.tommowalker.co.uk/snemzelda.png

Müssen Sie den Prozessor dieser Maschinen emulieren, indem Sie seine speziellen Assemblerbefehle interpretieren? Was gehört noch dazu? Wie sind sie typischerweise aufgebaut?

Können Sie jemandem, der an der Entwicklung eines Emulators (insbesondere eines Spielsystems) interessiert ist, einen Rat geben?

15 Stimmen

Das Wichtigste, was Sie finden müssen, ist das "Programmiererhandbuch" für dieses System, da es den "Vertrag" zwischen dem HW-Anbieter und den Programmierern beschreibt und Details verbirgt, die nicht relevant sind und sich ändern könnten. Ihre Chancen hängen von der Popularität des Systems ab.

155 Stimmen

Gute Wahl des Spiels.

2 Stimmen

7voto

oivvio Punkte 2736

Ich habe noch nie etwas so Ausgefallenes gemacht, wie eine Spielkonsole zu emulieren, aber ich habe einmal einen Kurs belegt, in dem die Aufgabe darin bestand, einen Emulator für die Maschine zu schreiben, die in Andrew Tanenbaums Strukturierte Computerorganisation . Das hat Spaß gemacht und mir eine Menge Aha-Momente beschert. Vielleicht sollten Sie dieses Buch in die Hand nehmen, bevor Sie sich an die Entwicklung eines echten Emulators machen.

4voto

Ratschläge zur Emulation eines echten Systems oder eines eigenen Systems? Ich kann sagen, dass Emulatoren funktionieren, indem sie die GESAMTE Hardware emulieren. Vielleicht nicht bis auf die Schaltung (wie das Verschieben von Bits, wie es die HW tun würde). Das Verschieben des Bytes ist das Endergebnis, also ist das Kopieren des Bytes in Ordnung). Emulatoren sind sehr schwer zu erstellen, da es viele Hacks (wie z. B. ungewöhnliche Effekte), Timing-Probleme usw. gibt, die man simulieren muss. Wenn ein (Eingabe-)Teil falsch ist, kann das gesamte System ausfallen oder bestenfalls einen Fehler/eine Störung aufweisen.

4voto

Barry Bond Punkte 131

El Gemeinsamer Quellgeräte-Emulator enthält übersetzbaren Quellcode für einen PocketPC/Smartphone-Emulator (erfordert Visual Studio, läuft unter Windows). Ich habe an V1 und V2 der Binärversion gearbeitet.

Sie befasst sich mit vielen Fragen der Emulation: - effiziente Adressübersetzung vom virtuellen Gast zum physischen Gast zum virtuellen Host - JIT-Kompilierung von Gastcode - Simulation von Peripheriegeräten wie Netzwerkadapter, Touchscreen und Audio - UI-Integration, für Host-Tastatur und -Maus - Speichern/Wiederherstellen des Zustands für die Simulation der Wiederaufnahme des Betriebs aus dem Energiesparmodus

1voto

Deepthought Punkte 2755

Um die von @Cody Brocious gegebene Antwort zu ergänzen
Im Zusammenhang mit der Virtualisierung, bei der Sie ein neues System (CPU, E/A usw.) für eine virtuelle Maschine emulieren, können wir die folgenden Kategorien von Emulatoren unterscheiden.

Interpretation: bochs ist ein Beispiel für einen Interpreter, es handelt sich um einen x86 PC-Emulator, der jede Anweisung des Gastsystems in einen anderen Satz von Anweisungen (des Host-ISA) übersetzt, um den beabsichtigten Effekt zu erzielen, und der sehr langsam ist, da er nichts zwischenspeichert, so dass jede Anweisung den gleichen Zyklus durchläuft.

Dynamischer Emulator: Qemu ist ein dynamischer Emulator. Das Beste daran ist, dass er so viele Anweisungen wie möglich direkt auf dem Host-System ausführt, so dass die Emulation schneller ist. Wie bereits von Cody erwähnt, unterteilt er den Code in Blöcke (1 einzelner Ausführungsablauf).

Statischer Emulator: Soweit ich weiß, gibt es keine statischen Emulatoren, die bei der Virtualisierung hilfreich sein können.

1voto

5Mixer Punkte 541

So würde ich mit der Emulation beginnen.

1. besorge dir Bücher, die sich mit Low-Level-Programmierung befassen, du brauchst sie für das "vorgetäuschte" Betriebssystem des Nintendo...Game Boy...

2. spezielle Bücher über Emulation und vielleicht über Betriebssystementwicklung. (Sie werden kein Betriebssystem entwickeln, aber das, was ihm am nächsten kommt.

3. Schauen Sie sich einige Open-Source-Emulatoren an, insbesondere solche für das System, für das Sie einen Emulator erstellen möchten.

4. Kopieren Sie Schnipsel des komplexeren Codes in Ihre IDE/Ihren Compiler. Dies erspart Ihnen das Schreiben von langem Code. Dies ist, was ich für die Entwicklung von Betriebssystemen tue, ich verwende einen Bezirk von Linux

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X