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.
4 Implementierung<br />
ist, wenn anstelle einer Konstante mit demselben Wert, im linken Muster der Regel eine<br />
symbolische Konstante steht. Im Gegensatz zu Variablen gilt bei symbolischen Konstanten<br />
diese Eigenschaft nur für konkrete Konstanten, nicht aber für andere Operationen.<br />
Mit symbolischen Konstanten lässt sich also ein Muster so verallgemeinern, dass es speziellere<br />
Muster, mit konkreten anstelle von symbolischen Konstanten, überdecken kann.<br />
Für die Aufstellung von allgemeineren Regeln im Zusammenhang mit Konstanten ist dies<br />
jedoch noch nicht ausreichend. Insbesondere für die Konstantenfaltung müssen nach wie<br />
vor alle Regeln mit expliziten Konstanten aufgezählt werden:<br />
0 + 0 → 0<br />
1 + 0 → 1<br />
1 + 1 → 2<br />
.<br />
Alleine für die Addition in Z8Bit sind schon 256 2 = 65536 Regeln möglich. Vorteilhaft<br />
wäre es jedoch, wenn die Konstantenfaltung für eine Operation in einer einzigen Regel<br />
zusammengefasst werden könnte. Es stellt sich also die Frage, wie eine solche Regel<br />
aussehen kann:<br />
sc0 + sc1 →???<br />
Die linke Seite der Regel gestaltet sich einfach. Es wird eine Operation und je nach<br />
Stelligkeit dieser Operation ein oder zwei Operanden in Form von symbolische Konstanten<br />
benötigt. Damit lässt sich das entsprechende Muster für die linke Seite der Regel<br />
aufstellen, z. B. sc0 + sc1 (siehe Abbildung 4.18).<br />
sc0<br />
add<br />
sc1<br />
⇒ ???<br />
Abbildung 4.18: Regel zu Konstantenfaltung – Rechte Seite noch unklar.<br />
Zu klären bleibt, wie die rechte Seite der Regel aussehen muss. Eine einfache symbolische<br />
Konstante, z. B. sc2 die jede beliebige Konstante repräsentieren kann ist hierfür zu<br />
allgemein. Bei Anwendung der Regel, durch beispielsweise einen Übersetzer, wäre nicht<br />
definiert wie der Wert von sc2 konkret aussehen muss. Es wird demnach eine symbolische<br />
Konstante benötigt, deren Wert in Abhängigkeit von anderen symbolischen Konstanten<br />
angegeben werden kann. Hierzu wird das Konzept der symbolischen Konstanten um komplexe<br />
symbolische Konstanten erweitert, die nicht nur einen Wert repräsentieren können,<br />
sondern denen auch eine Semantik in Form einer Berechnungsfunktion zugeordnet werden<br />
kann. Etwas formaler:<br />
52