Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1 Einführung<br />
Die Arbeit eines Übersetzers unterteilt sich in die Analyse des zu übersetzenden Quellprogramms<br />
und die Synthese in das gewünschte Zielprogramm. Der Übergang zwischen<br />
den beiden Phasen erfolgt in der Regel über eine Zwischendarstellung des Programms in<br />
einer maschinenunabhängigen Form, woraus im Anschluss das maschinenabhängige Zielprogramm<br />
erstellt wird. Wesentlich für die Effizienz des erzeugten Zielprogramms sind<br />
<strong>Optimierungen</strong>, also Transformationen der Zwischen- oder Zieldarstellung die während<br />
der Optimierungsphase vom Übersetzer vorgenommen werden.<br />
Grundlegend lassen sich globale und lokale <strong>Optimierungen</strong> unterscheiden. Während globale<br />
<strong>Optimierungen</strong> eine Vielzahl von Informationen berücksichtigen und sich in der<br />
Regel über mehrere Grundblöcke erstrecken, berücksichtigen lokale <strong>Optimierungen</strong> nur<br />
wenige Anweisungen. In dieser Arbeit werden ausschließlich lokale <strong>Optimierungen</strong> betrachtet.<br />
Lokale <strong>Optimierungen</strong> gibt es sowohl für die Zwischendarstellung als auch für die Zieldarstellung.<br />
Letztere ermöglicht oft zusätzliche maschinenabhängige <strong>Optimierungen</strong>, wie das<br />
Ausnutzen von Flags ( Überlaufbit, Übertragsbit, etc.), die vom Statusregister eines Prozessors<br />
bereit gestellt werden, oder die Verwendung von Spezialbefehlen. Die erzielbare<br />
Verbesserung durch lokale Optimierung ist abhängig davon, wie viele lokale Optimierungsmöglichkeiten<br />
im Code vorhanden sind, wie viele davon durch den Übersetzer gefunden<br />
werden und ob die verwendeten Ersetzungsregeln die optimale Zieldarstellung<br />
erzeugen oder lediglich eine Verbesserung erreichen. Da es sich bei lokalen <strong>Optimierungen</strong><br />
in heutigen Übersetzern meist um handgeschriebene Ersetzungsregeln handelt, ist<br />
die Anzahl der auffindbaren <strong>Optimierungen</strong> von den Kenntnissen des jeweiligen Entwicklers<br />
abhängig. Eine Optimierung kann nur gefunden und genutzt werden, wenn sie<br />
zum einen bekannt und zum anderen berücksichtigt wird.<br />
1.1 Zielsetzung der Arbeit<br />
Das Ziel dieser Arbeit ist die Entwicklung eines Verfahrens, welches in der Lage ist,<br />
mittels automatischer Mechanismen, systematisch Ersetzungsregeln zur lokalen Optimierung<br />
zu generieren. Hiermit soll es möglich sein, Entwicklern eine Auflistung an die<br />
Hand zu geben, in der alle lokalen <strong>Optimierungen</strong> bis zu einer festen Größe enthalten<br />
sind. Insbesondere sollen auch Konstanten berücksichtigt werden. Die Korrektheit der<br />
9