In dieser Übung soll eine statische Analyse entsprechend der Vorlesung vom 11.12 durchgeführt werden. Alle Begrifflichkeiten beziehen sich auf diese Vorlesung.
Ermitteln Sie für folgendes Programm die Mengen \(init\), \(final\) und \(flow\):
1if (x < y) { 2 a := y; 3 y := x; 4 x := a; }; 5a := x; 6b := y; 7while (x != y) { 8 a := y; 9 while (x > y) { 10 x := x - y; }; 11 b := y; 12 y := x; 13 x := a; };
\(init = \,\)
\(final =\{\)\(\}\)
\(\begin{array}{ll} blocks = \{&[x < y]^1, [a := y]^2, [y := x]^3, [x := a]^4,\\ & [a := x]^5, [b := y]^6, [x != y]^7, [a := y]^8,\\ &[x > y]^9, [x := x - y]^{10}, [b := y]^{11}, [y := x]^{12},\\ &[x := a]^{13} \} \end{array} \)
\(flow =\{\)\(\}\)
\(flow^r = \{\}\)
Führen Sie eine Live Variable Analyse durch indem sie die folgenden Tabellen vervollständigen: (Für die leere Menge \(\varnothing\) lassen sie die entsprechenden Felder einfach frei)
Welche elementaren Blöcke können nach den Erkenntnissen der Live Variable Analyse aus dem Programm entfernt werden ohne die Semantik zu verändern?
1 2 3 4 5 6 7 8 9 10 11 12 13
Es werden keine Daten übertragen. Per Klick auf "Ergebnis speichern" kann eine Datei gespeichert werden, welche die eingegebenen Ergebnisse enthält. Diese Datei sendet ihr bitte rechtzeitig bis Dienstag 23:59:59 an martin (punkt) ring (klammeraffe) dfki (punkt) de. Ihr könnt eure Abgabe später auch wieder laden und ansehen indem ihr auf "Ergebnis laden" klickt.