Emulator von Mac 68K

Der Emulator von Mac 68K war ein Softwareemulator, der in alle Versionen des Mac OS für PowerPC eingebaut ist. Dieser Emulator hat das Laufen von Anwendungen und Systemcode erlaubt, die für 680x0 ursprünglich geschrieben wurden, hat Modelle von Macintosh gestützt. Der Emulator war für Benutzer völlig nahtlos, und für Programmierer vernünftig nahtlos. Es wird gedacht, dass dieser Aspekt des Mac OS das erste Mal ist, dass solch eine Doppelhardware-Architektur Betriebssystem jemals erfolgreich durchgeführt worden war.

Ursprünge

Die erste Version wurde von Gary Davidian geschrieben, der sie für den Gebrauch auf Motorola 88000 Zentraleinheit ursprünglich geschaffen hatte, die im vorzeitigen ersten Versuch des Apfels einer RISC-Zielplattform verwendet ist. Eine spätere Version, mit der dynamischen Wiederkompilation, wurde von Eric Traut entwickelt, der später an erfolgreichen Wetteifer-Projekten an Connectix wie Geschwindigkeit Doubler gearbeitet hat (der noch schnelleren PowerPC 68k Emulator eingeschlossen hat), Virtuelle Spielstation und Virtueller PC.

Durchführung

Alle Versionen dieses Emulators haben mit der "Benutzer"-Teilmenge 68EC040 Befehlssatz mit einem 68020/68030 Ausnahme-Stapel-Rahmen wettgeeifert. Apfelentwickler-Dokumente zeigen an, dass der Emulator eine Betriebsumgebung zur Verfügung gestellt hat, die am nächsten diesem des Macintosh Centris 610, ein System ähnelt, das auf Motorola 68LC040 Mikroprozessor gestützt ist. Frühe Versionen haben damit durch die Entzifferung jeder Instruktion und sofort das Ausführen einer Reihe von gleichwertigen Instruktionen von PowerPC wettgeeifert. Für PCI PowerMacs wurde der dynamische Wiederkompilationsemulator verwendet, um Leistung zu erhöhen. Dynamische Wiederkompilation arbeitet durch "das Wiederkompilieren" allgemeiner Abteilungen des Codes in schneller, PowerPC-Eingeborener, Folgen, die lokal versteckt wurden. Der Emulator konnte dieselbe Folge 680x0 Code erkennen und den vorher versteckten Code von PowerPC führen, um zu vermeiden, die Übersetzung wieder zu tun. Dieser Emulator war dazu theoretisch fähig, 680x0 wettzueifern, codieren schneller, als irgendwelcher echt 680x0 zum Laufen davon fähig war. 68LC040 hatte keine Schwimmpunkt-Instruktionen, diese Leistung ein bisschen einfacher, aber nicht weniger eindrucksvoll machend.

Ein Grund, dass dieser Wetteifer so erfolgreich war, besteht darin, dass viele der APIs für den Mac OS als Fallen auf 680x0 Verarbeiter ursprünglich durchgeführt wurden; deshalb wurde das Benennen einer API wirklich durch 680x0 als die Entsprechung von einer Fehlerbedingung erkannt, die es veranlassen würde, diesen Fehler durch einen seiner Hardware-Vektoren zu behandeln. Der Reihe nach würde dieser Vektor aufblicken und die Betriebssystemroutine vom ROM oder RAM führen. Im Emulator konnten solche Fallen durch den heimischen Code von PowerPC ersetzt werden, so war der einzige Code, der wird wetteifert, die Anwendung selbst, und jede System-API, die es genannt hat, mit dem heimischen Code von PowerPC beschleunigt werden konnte. Das hat auch Apfelzeit erlaubt, den OS zu PowerPC zu tragen. An den ersten nur zeitkritischen Aspekten wurden im heimischen Code umgeschrieben, viele der OS wettgeeifert verlassend. Allmählich wurden die meisten OS umgeschrieben, um heimisch zu sein, so ist der OS schneller mit der Zeit geworden.

Für den Programmierer wurde der Übergang zu PowerPC ziemlich schmerzlos gemacht, weil der Emulator angefangen wurde und automatisch angehalten hat. Das wurde mit einem neuen Typ des Zeigestocks genannt Universal Procedure Pointer (UPP) erreicht. Für den 68k-Code ist dieser Zeigestock geschienen, ein gewöhnlicher Zeigestock zum Code zu sein, und konnte als solcher verwendet werden. Jedoch hat es wirklich zu einer Datenstruktur geführt, die eine spezielle Falle-Instruktion und Fahnen enthalten hat, die die Befehlssatz-Architektur (ISA) des genannten Codes anzeigen. Aus dem Code von PowerPC konnte dieser UPP zu CallUniversalProc Funktion passiert werden, es zu nennen. Der 68k Emulator hat sich dann mit Details wie das Präsentieren von passierten Rahmen in der richtigen Ordnung für das ISA fragliche, sowie das Starten und Aufhören des Emulators, wie erforderlich, befasst. Die Bearbeiter für Mac OS haben solchen UPPs automatisch geschaffen, als die richtigen Makros verwendet wurden, und die Systembibliotheken von PowerPC heimische Stummel enthalten haben, um durch dem Eingeborenen durchsichtig zu rufen, oder noch-68k wie erforderlich, fungieren. Das hat bedeutet, dass, sich mit der Doppelarchitektur befassend, sehr wenig Arbeit für den Programmierer, und gerade wie der OS verlangt hat, konnten sich Anwendungen selbst vermischen und 680x0 und Code von PowerPC ziemlich leicht zusammenpassen.

Aktueller Status

Der Emulator ist nicht mehr ein Teil von Mac OS X, obwohl es als ein integraler Bestandteil sowohl der Klassischen Umgebung als auch SheepShaver bleibt.

Siehe auch

  • Mac OS nanokernel
  • Alpha-Mikrosysteme für eine ähnliche Architektur, um 68K-Code auf x86 zu führen
  • Rosetta, eine ähnliche Eigenschaft in Mac OS X, der Instruktionen von PowerPC zu x86 Instruktionen übersetzt

Britney (Album) / Englischer Hirte
Impressum & Datenschutz