25.10.2012 Aufrufe

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!