Binäre Übersetzung

In der Computerwissenschaft ist binäre Übersetzung der Wetteifer eines Befehlssatzes durch einen anderen durch die Übersetzung des Codes. Folgen von Instruktionen werden aus der Quelle zum Zielbefehlssatz übersetzt. In einigen Fällen wie Befehlssatz-Simulation kann der Zielbefehlssatz dasselbe als der Quellbefehlssatz sein, Prüfung und das Beseitigen bei Eigenschaften wie Instruktionsspur, bedingte Unterbrechungspunkte und Krisenherd-Entdeckung zur Verfügung stellend.

Die zwei Haupttypen sind statische und dynamische binäre Übersetzung.

Statische binäre Übersetzung

Ein Übersetzer, der statische binäre Übersetzung verwendet, hat zum Ziel, den ganzen Code einer rechtskräftigen Datei in den Code umzuwandeln, der auf der Zielarchitektur läuft, ohne den Code zuerst führen zu müssen, wie in der dynamischen binären Übersetzung getan wird. Das ist sehr schwierig, richtig zu tun, seitdem kann nicht der ganze Code vom Übersetzer entdeckt werden. Zum Beispiel können einige Teile des rechtskräftigen nur durch indirekte Zweige erreichbar sein, deren Wert nur an der Durchlaufzeit bekannt ist.

Ein solcher statischer binärer Übersetzer verwendet universale superoptimizer Guckloch-Technologie (entwickelt von Sorav Bansal und Alex Aiken von der Universität von Stanford), um effiziente Übersetzung zwischen vielleicht vielen Quelle durchzuführen und Paare, mit beträchtlich niedrigen Entwicklungskosten und hoher Leistung des binären Ziels ins Visier zu nehmen. In Experimenten von PowerPC-to-x86 Übersetzungen haben einige Dualzahlen sogar heimische Versionen überboten, aber durchschnittlich sind sie mit zwei Dritteln der heimischen Geschwindigkeit gelaufen.

Dynamische binäre Übersetzung

Dynamische binäre Übersetzungsblicke auf eine kurze Folge des Codes — normalerweise auf der Ordnung eines einzelnen grundlegenden Blocks — übersetzen es dann und verstecken die resultierende Folge. Code wird nur übersetzt, weil er entdeckt wird und wenn möglich, und Zweiginstruktionen gemacht werden, zu bereits dem übersetzten und gesparten Code (memoization) hinzuweisen.

Dynamische binäre Übersetzung unterscheidet sich vom einfachen Wetteifer (die Hauptschleife des Emulators "gelesen beseitigend decodieren führen" — ein Hauptleistungsengpass durch), dafür durch den großen oben während der Übersetzungszeit zahlend. Das oben wird hoffentlich amortisiert, weil übersetzte Codefolgen mehrmals durchgeführt werden.

Fortgeschrittenere dynamische Übersetzer verwenden dynamische Wiederkompilation, wo der übersetzte Code instrumentiert wird, um herauszufinden, welche Teile eine Vielzahl von Zeiten durchgeführt werden, und diese Teile aggressiv optimiert werden. Diese Technik ist an einen JIT Bearbeiter erinnernd, und tatsächlich können solche Bearbeiter (z.B die Technologie von HotSpot der Sonne) als dynamische Übersetzer von einem virtuellen Befehlssatz (der bytecode) zu einem echten angesehen werden.

  • Apple Computer hat einen dynamischen Übersetzen-Emulator für den M68K-Code in ihrer Linie von PowerPC von Regenmänteln durchgeführt, die ein sehr hohes Niveau der Zuverlässigkeit, Leistung und Vereinbarkeit erreicht haben (sieh Emulator von Mac 68K). Das hat Apfel erlaubt, den Maschinen dazu zu bringen, mit nur einem teilweise heimischen Betriebssystem einzukaufen, und Endbenutzer konnten die neue, schnellere Architektur annehmen, ohne ihre Investition in der Software zu riskieren. Teilweise, weil der Emulator so erfolgreich war, sind viele Teile des Betriebssystems wettgeeifert geblieben. Ein voller Übergang zu einem Betriebseingeborener-System (OS) von PowerPC wurde bis zur Ausgabe von Mac OS X (10.0) 2001 nicht gemacht. (Der OS X "Klassische" Laufzeitumgebung hat fortgesetzt, diese Wetteifer-Fähigkeit auf PowerPC Macs bis zu OS X 10.5 anzubieten.)
  • Mac OS X 10.4.4 für auf Intel gegründeten Macs hat die Rosetta dynamische Übersetzungsschicht vorgestellt, um den Übergang des Apfels von der PPC-basierten Hardware bis x86 zu erleichtern. Entwickelt für den Apfel durch Transitive Corporation ist die Software von Rosetta eine Durchführung der Lösung von QuickTransit von Transitive.
  • QuickTransit während seiner Produktlebensspanne hat auch SPARCx86, x86Power Architektur und MIPSItanium 2 Übersetzungsunterstützung zur Verfügung gestellt.
  • DEZ hat ähnlichen Erfolg mit seinen Übersetzungswerkzeugen erreicht, um Benutzern zu helfen, vom CISC VAX Architektur zum Alpha RISC Architektur abzuwandern.
  • DEZ hat den FX geschaffen! 32 binärer Übersetzer, um x86 Anwendungen auf Anwendungen von Alpha umzuwandeln.
  • Die Wabi Software von Mikrosystemen der Sonne hat dynamische Übersetzung von x86 bis SPARC Instruktionen eingeschlossen.
  • Im Januar 2000 hat Transmeta Corporation ein neuartiges Verarbeiter-Design genannt Crusoe bekannt gegeben. Von den häufig gestellten Fragen auf ihrer Website besteht Der kluge Mikroprozessor aus einer Hardware VLIW Kern als sein Motor und eine Softwareschicht genannt der Code Morphing Software. Der Code Morphing Software handelt als eine Schale... morphing oder das Übersetzen x86 Instruktionen zu Instruktionen des Eingeborenen Crusoe. Außerdem enthält der Code Morphing Software einen dynamischen Bearbeiter und Code optimizer... Das Ergebnis ist vergrößerte Leistung an kleinstem Betrag der Macht.... [Das] erlaubt Transmeta, die VLIW Hardware und den Code Morphing Software getrennt zu entwickeln, ohne die riesige Basis von Softwareanwendungen zu betreffen. Mehr Info an arstechnica, geek.com.
  • HP-WIDDER (Automatische Wiederübersetzung und Einheitliche Umgebungssimulation) ist ein dynamisches binäres Übersetzungssystem, das schnelle Codeinterpretation mit zwei Phase dynamische Übersetzung zu durchsichtig verbindet und führen Sie genau HP-Anwendungen von 9000 HP-UX auf dem HP-UX 11i für HP-Integritätsserver durch. Der WIDDER der schnelle Dolmetscher eifert mit einem ganzen Satz von nichtprivilegierten Instruktionen des PAPAS-RISC ohne Benutzereingreifen wett. Während der Interpretation kontrolliert es das Ausführungsmuster der Anwendung und übersetzt nur den oft durchgeführten Code in den heimischen Code von Itanium an der Durchlaufzeit. WIDDER führt zwei Phase dynamische Übersetzung, eine Technik durch, in der der übersetzte Code in der ersten Phase Laufzeitprofil-Information sammelt, die während der zweiten Phase-Übersetzung verwendet wird, um weiter den übersetzten Code zu optimieren. WIDDER versorgt den dynamisch übersetzten Code im Speicherpuffer genannt geheimes Codelager. Weitere Verweisungen auf übersetzte grundlegende Blöcke führen direkt im geheimen Codelager durch und verlangen zusätzliche Interpretation oder Übersetzung nicht. Die Ziele von übersetzten Codeblöcken werden zurückgeflickt, um sicherzustellen, dass Ausführung im geheimen Codelager den größten Teil der Zeit stattfindet. Am Ende des Wetteifers verwirft WIDDER den ganzen übersetzten Code, ohne die ursprüngliche Anwendung zu modifizieren. Der WIDDER-Wetteifer-Motor führt auch Umgebungswetteifer durch, der mit einem HP Anwendungssystemanrufe von 9000 HP-UX wetteifert, fädelt Signalübergabe, Ausnahme-Management, Management, Wetteifer des HP GDB für das Beseitigen und Kerndateientwicklung für die Anwendung ein.
  • Intel Corporation hat entwickelt und eine IA-32 Ausführungsschicht durchgeführt - ein dynamischer binärer Übersetzer hat vorgehabt, IA-32 Anwendungen auf mit Sitz in Itanium Systemen zu unterstützen, der in den Windows-Server von Microsoft OS für die Architektur von Itanium, sowie in mehreren Geschmäcken nach Linux, einschließlich Red Hat und Suse eingeschlossen wurde. Es hat einen zweiphasigen (später dreiphasig) Annäherung verwendet: Am Anfang hat es schnell jedes Stück des Codes an einem grundlegenden Block-Niveau übersetzt, bestimmte Instrumentierung hinzufügend, um heißen Code zu entdecken; dann wurde heißer Code an einem Superblock-Niveau dynamisch optimiert, und der optimierte übersetzte Code hat kalten Code im Fluge ersetzt. Späterer Interpretationsmotor wurde hinzugefügt, der erlaubt hat, zusammen zu vermeiden, dass die Übersetzung des Codes gerade ein paar Male durchgeführt hat - ist nichtoptimierte Übersetzung der Kälte so die zweite Phase geworden, und heiße optimierte Übersetzung ist die dritte Phase geworden. IA-32 Ausführungsschicht hat selbstmodifizierten Code unterstützt, und konnte ihn sogar ganz gut optimieren.
  • Einige Test-& Beseitigen-Systeme, die auf die 1970er Jahre wie "Oliver", verwertete dynamische binäre Übersetzung zurückgehen, um Unterbrechungspunkt, Lagerungsschutz, Spur, Programm-Zeichentrickfilm und andere Eigenschaften für IBM/360/370/390/ES9000 Plattformen zur Verfügung zu stellen.

Siehe auch

Außenverbindungen


Grundlegender Block / Helmuth von Moltke
Impressum & Datenschutz