Unterschiedliche CPU-Vorgänge (IA-32, ARM9 usw.) sollten in ihrer Art (Verschieben, Lesen, Schreiben von Daten usw.) gleich sein.
Sie sollten sein, aber sie sind es nicht. Eine CPU-Architektur implementiert diese grundlegenden Operationen entsprechend den Vorstellungen ihrer Designer - und dies kann sehr unterschiedlich sein, je nachdem, was die Designer zu erreichen versuchen. Dinge, die auf einer CPU in einer Anweisung ausgeführt werden können, erfordern für viele andere Anweisungen.
Könnten wir einfach eine ausführbare Datei konvertieren und dann ausführen? Warum ist es sowieso so ressourcenabhängig (warum brauche ich eine leistungsfähige CPU, um eine andere CPU zu emulieren)?
Wenn Sie nur die CPU emulieren möchten, ist dies relativ einfach möglich. Das "Konvertieren" einer ausführbaren Datei im laufenden Betrieb wird als "Dyamic-Rekomplikation" bezeichnet, und viele Emulatoren tun dies bereits. Normalerweise möchte man jedoch eine gesamte Plattform nachbilden. Dies umfasst andere Hardware als die CPU, und manchmal ist es schwierig, diese Hardware zu emulieren (z. B. Atari 2600 TIA) oder schlecht dokumentiert (NES PPU-Videohardware oder sogar aktuelle GPU-Hardware) oder beides. CPUs arbeiten immer im Kontext einer Plattform, und normalerweise erwartet die Software, dass die CPU + -Plattform zusammenarbeitet. Die Anforderungen für die Emulation einer Plattform und die Einhaltung strenger Zeitvorgaben sind der harte und ressourcenintensive Teil.