Institut für Computersprachen
Programmiersprachen und Übersetzer

Detailinformation

( Fenster schließen )


Diplomarbeit
Titel Erzeugung optimierten Codes für Stackmaschinen
Autor Maierhofer, Martin
Erscheinungsjahr 1997
Inventardatum 18.02.1997
Abstract Nicht zuletzt durch die Verbreitung der Programmiersprache Java bzw. der ihr zugrundeliegenden JavaVM-Architektur erleben Stackarchitekturen derzeit eine Renaissance. Für eine effiziente Unterstützung Algol-ähnlicher Hochsprachen auf Stackmaschinen bedarf es auf ihre Architektur abgestimmter Techniken. Unter anderem soll ein optimierender Compiler unnötige Speicherzugriffe, die durch das Lesen und Schreiben von lokalen Variablen entstehen, unterdrücken und so eine effiziente Ausführung des erzeugten Codes ermöglichen. Dazu werden die Variablen temporär auf dem Stack zwischengespeichert. Ein solches Verfahren ist allerdings nur sinnvoll, wenn Speicherzugriffe aufwendiger sind als Stackmanipulationen. Im Rahmen dieser Arbeit werden zwei Ansätze zur Lösung dieses Problems vorgestellt und verglichen, wobei zwei Stackarchitekturen (u.a. JavaVM) als Zielarchitekturen Verwendung finden. Beide Methoden arbeiten "lokal", d.h. die Optimierung findet nur innerhalb von basic blocks statt. Die erste, von Phil Koopman vorgeschlagene Methode des "stack scheduling" wird in Zusammenspiel mit einem einfachen instruction scheduling (ein "depth first postorder traversal" des Abhängigkeitsgraphen) eingesetzt. "DAG scheduling" als zweiter Ansatz verändert die Reihenfolge der Befehle (führt also ein instruction scheduling durch), um die Anzahl der Variablenzugriffe so klein wie möglich zu halten und ermittelt den optimalen Code bezüglich Variablenzugriffen. Damit wird es möglich, die Effizienz von Koopmans Methode zu bewerten. Es zeigt sich, daß die Ergebnisse des stack scheduling dem Optimum nahe kommen. Der Anteil von Variablenzugriffen in JavaVM-Code kann gegenüber dem durch den Java Computer javac erzeugten Code von typischerweise 40% auf etwa 30% reduziert werden. Dafür steigt der Anteil von Stackmanipulationsbefehlen von etwa 5% auf bis 15%.
Status Verfügbar

( Fenster schließen )