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.
2 Grundlagen<br />
Die Formel setzt sich zusammen aus der folgenden Instanz G des SAT-Problems mit den<br />
Prädikaten p0, p1, p2 aus der Theorie der Integer-Arithmetik:<br />
G = p0 ∧ p1 ∧ ¬p2<br />
p0 = (x + 5) > 6<br />
p1 = (x + 5) < 9<br />
p2 = ¬(x = 2)<br />
(2.2)<br />
Auch hier ist wieder eine Belegung β gesucht, so dass G unter β zu wahr ausgewertet<br />
werden kann. Da alle drei Prädikate durch eine ∧-Verknüpfung miteinander verbunden<br />
sind, muss x so gewählt werden, dass sowohl p0 als auch p1 sowie p2 wahr ergeben. Für<br />
β : x ← 3 ist dies der Fall. Für G existiert also eine gültige Belegung β und somit ist G<br />
auch erfüllbar.<br />
Nach der obigen Darstellung des SMT-Problems wird deutlich, dass SMT im Grunde<br />
auch als Erweiterung von SAT um zusätzliche Theorien aufgefasst werden kann. In der<br />
Tat beruhen viele SMT-Solver auf effizienten SAT-Solvern bzw. auf effizienten Verfahren<br />
zur Lösung des SAT-Problems. In [9] wird die Kombination von SAT-Solvern und<br />
Theorie-Solvern genauer erläutert.<br />
2.6 Firm und libFirm<br />
Firm ist eine graphbasierte Zwischensprache, die Programme in die SSA-Form 1 darstellt.<br />
Entwickelt wurde Firm an der Universität Karlsruhe (TH) [16]. Firm stellt ein<br />
Programm als gerichteten Graphen dar, in dem Datenabhängigkeiten und Steuerfluss<br />
kombiniert sind. Die Knoten des Graphen repräsentieren den aus der jeweiligen Operation<br />
resultierenden Wert. Die Datenabhängigkeitskanten zeigen auf die zur Berechnung des<br />
Ergebnisses benötigten Argumente. Die Reihenfolge der Befehle innerhalb eines Grundblocks<br />
ist nicht explizit vorgegeben, sondern ergibt sich aus den Datenabhängigkeiten.<br />
So kann beispielsweise eine Multiplikation erst durchgeführt werden, wenn alle benötigten<br />
Argumente zur Verfügung stehen. Für Grundblöcke hingegen wird eine Reihenfolge<br />
teilweise durch den Steuerfluss festgelegt.<br />
libFirm [13] ist die Implementierung von Firm in Form einer C-Bibliothek.<br />
1 Static Single Assignment Form<br />
17