created: 2018-04-15 13:23:15 (+00:00; UTC; UTC)
last modified: 2018-04-15 13:24:21 (+00:00; UTC; UTC)
Die synchrone Datenflusssprache SIG unterstützt Fallunterscheidungen. Im bisherigen SIG-Compiler werden alle Fälle berechnet und danach die benötigten Werte ausgewählt. Nicht benötigte Werte werden verworfen. Das Ziel dieser Arbeit ist das Überspringen im konkreten Fall nicht benötigter Berechnungen indem die Bedingungen, die den Fall bestimmen, vor den Berechnungen ausgewertet werden. Neben der Erstellung der Sprünge ist auch die effiziente Prüfung der Sprungbedingungen wichtig. Dazu werden die Bedingungen vereinfacht und die Sprünge so organisiert, dass weniger Bedingungen geprüft werden müssen. Bei den Transformationen auftretende unerwünschte Effekte werden durch Techniken wie Dead Code Elimination und Common Subexpression Elimination entfernt. Weiterhin wird die nächste Compilerphase vorbereitet, indem berechnet wird, unter welchen Bedingungen Variablen definiert sind und Basic Blocks ausgeführt werden. Die Evaluation zeigt, dass der erzeugten Kontrollfluss die Struktur der Programme gut abbildet. In bestimmten Situationen ist das Ergebnis nicht optimal, kann jedoch mit Partial Dead Code Elimination ohne Änderung des Kontrollflusses verbessert werden. Auch die Berechnung der Bedingungen, unter denen die Variablen definiert sind, arbeitet korrekt, jedoch werden logische Zusammenhänge von Variablen nicht erfasst.