25.10.2012 Aufrufe

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

4 Implementierung<br />

Variablen von m, wie in der Abbildung gezeigt, kann ein semantisch äquivalentes Muster<br />

zu l in Form von m ′ gefunden und damit eine neue Regel erzeugt werden.<br />

Um zu garantieren, dass alle Ersetzungsregeln gefunden werden können, müssen neben<br />

dem eigentlichen Muster m auch alle Varianten von m berücksichtigt werden, die eine<br />

Permutation der Variablen von m darstellen. Zu diesem Zweck wird zunächst m durch<br />

den Vorabtest (Abschnitt 4.3.2) und den Erfüllbarkeitstest (Abschnitt 4.3.3) untersucht<br />

und anschließend nacheinander jede weitere Variante m ′ , bis ein äquivalentes Muster<br />

gefunden oder alle Varianten untersucht wurden. In Listing 4.1 wird dieser Vorgang als<br />

Codeausschnitt dargestellt. Die vollständige Prozedur zeigt Listing 4.7 in Abschnitt 4.4.<br />

Listing 4.1 Suche nach einem semantisch äquivalenten Muster<br />

1: . . .<br />

2: p ← m ⊲ Beginne Suche mit m<br />

3: m ′ ←⊥<br />

4: while p �=⊥ ∧ m ′ =⊥ do ⊲ Solange eine Permutation existiert und kein semantisch<br />

äquivalentes Muster gefunden wurde<br />

5: MCand ← Vorabtest(m, MOpt) ⊲ Kandidaten ermitteln<br />

6: m ′ ← ErfüllbarkeitsTest(m, MCand) ⊲ äquivalentes Muster suchen<br />

7: if m ′ =⊥ then<br />

8: p ← GetNextPermutation(p) ⊲ nächste Permutation erzeugen<br />

9: end if<br />

10: end while<br />

11: . . .<br />

Normalisierung bezüglich unterschiedlicher Operandentypen<br />

Viele Muster sind aufgrund algebraischer Eigenschaften wie der Kommutativität semantisch<br />

äquivalent, unterscheiden sich aber in ihrer syntaktischen Struktur wie Abbildung<br />

4.8 zeigt.<br />

var0 1<br />

add<br />

m<br />

Abbildung 4.8: Abbildung zweier semantisch äquivalenter aber syntaktisch verschiedener<br />

Muster.<br />

1<br />

add<br />

m ′<br />

var0<br />

31

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!