Einführung in die Systemprogrammierung

Werbung
Einführung in die Systemprogrammierung
Bytecode
Prof. Dr. Christoph Reichenbach
Fachbereich 12 / Institut für Informatik
2. Juli 2015
Bytecode als Zwischensprache
Historischer Hintegrund:
I
I
I
Entwicklung von Pascal-Übersetzern
Portierung von Übersetzern von Architektur A nach B
zeitaufwändig, fehleranfällig
Idee:1
I
I
I
I
I
1
Wir schreiben eine Übersetzerimplementierung, in Pascal
Zielarchitektur P, eine Stapelmaschine (nicht in
Hardware)
P-Code: möglichst einfach gehalten
Interpreter für P-Code: Einfach zu schreiben
Übersetzen den Übersetzer nach P-Code:
⇒ Ausführen des Übersetzers benötigt nur
P-Code-Interpreter
Nori, Ammmann, Jensen, Nägeli: “The Pascal P Compiler: Implementation
notes”, ETH Zürich, Dezember 1974
Bytecode heute
I
I
P-Code ist erstes Beispiel für Bytecode
In unseren Beispielsprachen verwendet von:
I
I
I
I
Python
Java
Interpretierung ineffizient (Faktor 15-20 langsamer als
übersetzer Code)
Stattdessen: Übersetzung P-Code nach Maschinencode
Bytecode: Vorteile und Nachteile
Vorteile
I
I
Obfuszierung trotz
Portabilität
Übersetzung Bytecode vs.
Quellcode:
I
I
I
I
Nachteile
I
I
I
I
Sparen uns Parsen,
Namensanalyse
Einfache Interpretierung
Software-Werkzeuge können
einfache
Programmrepräsentierung zur
Analyse nutzen
Oberflächensyntax kann
geändert werden
Aufwand
Bytecode-Schnittstelle:
I
I
I
Spezifizierung
Backend
Frontend
Speicherrepräsentierung
Bytecode-Eingabe, Ausgabe
implementieren
Versionskompatibilität
Andere Formen von Bytecode
I
Dalvik-Bytecode
I
I
I
Common Intermediate Language (CIL)
I
I
I
Verwendet auf Android
Registertransfercode: Ähnelt realistischem Maschinencode
Verwendet von Microsoft .NET
Ähnlich Java-Bytecode
LLVM-Bitcode
I
I
...
Verwendet vom LLVM-Übersetzer
Komplexer Code mit Eigenschaften einer Hochsprache
Zusammenfassung: Bytecode
I
I
I
I
I
Bytecode repräsentiert Zwischenzustand des Übersetzers
Meist weniger komplex als Hochsprache,
Maschinensprache
Plattformunabhangig
Erleichtert Portierung von Programmen
Höhere Implementierungskomplexität
Herunterladen