Datenflussanalyse Klassisch Seminar Progammanalyse SS 2009 Referent Lorenz
- Slides: 40
Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24. 06. 2009
Agenda - Einleitung - Einführung in die Sprache WHILE - Die Intraprozedurale Analyse - Available Expressions Analysis - Reaching Definitions Analysis - Very Busy Expressions Analysis - Live Variables Analysis - Richtigkeit 2
Einleitung Was bedeutet “Datenflussanalyse”? Ermittlung der Zusammenhänge zwischen einzelnen Stellen im Programm und den darin berechneten Werten. Typische Fragen sind: o Was genau wird in dem Programmabschnitt berechnet? o Wie und wo wird eine bestimmte Variable berechnet? o Welche Werte kann sie annehmen? o Welche Befehle beinflussen welche Variable zu welchem Zeitpunkt? 3
Einleitung Datenflussanalyse – wie und wozu? Wozu? - Primär zur Codeoptimierung - Gegebenenfalls zur Lösung von entstandenen Problemen Wie? - Programmcode analysieren und verstehen (Hilfsmittel: Flussgraph) - Datenflussprobleme erkennen und Gleichung aufstellen - Code optimieren bzw. Probleme lösen 4
Einführung in WHILE Die Sprache: WHILE - Imperative Sprache - Programmcode glieder sich in Blöcke - Jeder Block besitzt eindeutiges Etikett (Label) - Bezeichnen Zuweisungen und boolsche Bedingungen - Haben intern keinen Datenfluss Folgende Elemente werden definiert: o Zuweisung o Skip o Bedingung o Sequenz o While-Schleife [x : = a] [skip] if [b] then S 1 else S 2 S 1 ; S 2 while [b] do S 5
Intraprozedurale Analyse - Beschäftigt sich mit Elementaraussagen - Gliedert sich in mehrere Datenflussanalysen (spätere Folien) - Unterscheidet Vorwärts- und Rückwärtsanalysen Flussfunktionen (Um Flussgraph aufzustellen) Fluss-Funktion: flow: Stmt P(Lab x Lab) Rückflussfunktion: flow : Stmt P(Lab x Lab) Beschreiben den Fluss zwischen den Lables der Aussagen 6
Intraprozedurale Analyse - Flussfunktion Wie sieht der Flussgraph von folgendem Code aus ? Die Flussfunktion liefert folgende Menge an Werten: {(1, 2), (2, 3), (3, 4), (4, 2)} ÞDamit können wir den nachfolgenden Graphen zeichnen… 7
Intraprozedurale Analyse - Flussgraph [z: =1] [x>0] no yes [z: =z*y] [x: =x-1] 8
Available Expressions Analysis o Analyse Algorithmus (Vorwärtsanalyse) o Beschreibt die Verfügbarkeit einzelner Ausdrücke an bestimmten Programmstellen o Frage: Welche Ausdrücke / Werte sind an einer bestimmten Programmstelle gültig? o Ziel: Codeoptimierung o Beispiel: 9
Available Expressions Analysis Definition von kill- und gen-Funktionen Kill-Funktion: Ausdruck ist killed, wenn eine der Variablen verändert wird (Innerhalb des Blocks). kill. AE : Blocks P(AExp) Gen-Funktion: Ausdruck wird im Programmbereich generiert und keine Variable davon innerhalb des Blocks verändert. gen. AE : Blocks P(AExp) 10
Available Expressions Analysis kill- und gen-Funktionen bei AEA 11
Available Expressions Analysis Entry- & Exit-Funktionen Durch diese beiden Funktionen wird die Analyse bestimmt: Falls: 12
Available Expressions Analysis – Beispiel 1: o Nur Block 1 generiert den Ausdruck: {x+y} o Andere generieren / killen keine Ausdrücke o Der Flussgraph sieht wie folgt aus: […] no yes […] 13
Available Expressions Analysis – Beispiel 1 Gesucht wird: größte Lösung der Gleichung für AEentry Bestimmen der AE-Gleichungen: 14
Available Expressions Analysis – Beispiel 1 Wir erhalten: Deutung: o Es gibt 2 Lösungen für die Gleichung: - {x+y} - die leere Menge o Informativ aber nur {x+y} o {x+y} stellt die größte Lösung der Gleichung dar. => Der Ausdruck {x+y} ist jedesmal verfügbar, wenn l’ betreten wird (hier: Schleifeneintritt) 15
Available Expressions Analysis – Beispiel 2: Aufstellen der kill & gen Funktionen: -------------------------- 16
Available Expressions Analysis – Beispiel 2 Aufstellen der AE-Funktionen: 17
Available Expressions Analysis – Beispiel 2 Als Ergebnis erhält man folgende Tabelle: ----------------------- [x: =a+b] [y: =a*b] [y>a+b] [a: =a+1] [x: =a+b] 18
Available Expressions Analysis – Beispiel 2 Deutung: o Der Ausdruck a wird innerhalb der Schleife neu definiert o Der Ausdruck {a+b} ist immer am Schleifeneingang verfügbar o {a*b} nur beim ersten Schleifeneingang verfügbar wird vor dem nächsten Durchlauf gekilled 19
Reaching Definition Analysis o sehr ähnlich zur AE-Analyse (Vorwärtsanalyse) o Frage: Welche Definition/Zuweisung ist bei einer bestimmten Stelle im Programm gültig? o Ziele: Kenntnis über die jeweilige Gültigkeit einer Zuweisung o Beispiel: Nach Label 2: (x, 1), (y, 2) Nach Label 3: (x, 1), (y, 2), (a, 4), (x, 5) 20
Reaching Definition Analysis - Vorgehensweise o Definieren der kill. RD, gen. RD, RDentry und RDexit funktionen: 21
Reaching Definition Analysis - Vorgehensweise 22
Reaching Definition Analysis - Beispiel o Funktionen am Programmteil anwenden: Beispiel: Es entsteht folgende Tabelle der kill & gen Funktionen: ------------------------------------1 2 3 4 5 23
Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (1): ____________________________ 1 2 3 4 5 24
Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (2): ____________________________ 1 2 3 4 5 25
Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (3): ____________________________ 1 2 3 4 5 26
Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (4): ____________________________ 1 2 3 4 5 27
Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (5): ____________________________ 1 2 3 4 5 Somit sind alle RD-Funktionen aufgelöst. Deutung: Man erkennt nun, welche Zuweisung an welcher Stelle existiert! 28
Very Busy Expressions Analysis o Ein Ausdruck wird als „very busy“ bezeichnet, wenn: - am Ende eines Labels sichergestellt ist, dass er im weiteren Verlauf jeden Fall gebraucht wird. => Wichtig: Der Ausdruck muss verwendet bzw. betrachtet werden bevor einer seiner Werte verändert wird! o Es handelt sich um eine Rückwärtsanalyse o Ziel: Codeoptimierung 29
Very Busy Expressions Analysis Veranschaulichung und Analyse am Beispiel: o Die Ausrücke {a-b} und {b-a} sind „very busy“ zum Zeitpunkt 1 o Um das Programm zu analysieren müssen wieder alle Funktionen aufgestellt werden! 30
Very Busy Expressions Analysis o Hier gleich angewendet (allgemeine Formeln nachlesen!) o kill & gen Funktionen: o VB Funktionen: 31
Very Busy Expressions Analysis Nach Vereinfachung erhält man: o Deutung: Aus dieser Tabelle lässt sich nun jeder Ausdruck, der zu einem bestimmten Zeitpunkt „very busy“ ist, ablesen. 32
Live Variables Analysis o Eine Variable wird als „live“ bezeichnet, wenn: - sie am Ende eines Labels einen Wert enthält, der später benötigt werden könnte. o Rückwärtsanalyse o Verwendung: - Dead code elimination (Variable nicht live – Zuweisungsblock löschen) - Registerzuweisung 33
Live Variables Analysis Beispiel: Frage: Welche variablen sind zu welchem Zeitpunkt „live“? Antwort: x nach Label 1 ist nicht live x nach Label 3 live y nach Label 2 live => Erste Zuweisung ist Redundant, kann also gelöscht werden. 34
Live Variables Analysis Definitionen der kill, gen und LV Funktionen: 35
Live Variables Analysis Analyse nach Aufstellen der gen, kill und LV Funktionen ergibt folgendes: 36
Live Variables Analysis Durch einsetzten und vereinfachen erhält man wieder die Ergebnistabelle: Deutung: - Alle „live“-Variablen bzgl ihrem Programmpunkt ablesbar - Am Programmende sind alle Variablen tot – nicht „live“ 37
Live Variables Analysis - Richtigkeit Die Richtigkeit der Live Variables Analysis o Um Richtigkeit zu zeigen, benutzen wir folgendes Theorem: 1. 2. 38
Live Variables Analysis - Richtigkeit Veranschaulichung am Beispiel: , V 1 = {y, z} und V 2 = {x} o o Nach Theorem und folgt, dass wenn V 2 nach dem Block live ist, muss V 1 davor live sein. 39
Servus Vielen Dank für die Aufmerksamkeit! 40
- Datenflussanalyse
- Referent qruplar
- What is antecedent in grammar
- Liceo scientifico alessandro volta
- Position of power definition
- Absent referent definition
- Co referent
- Referent power
- Referent znacenje
- Different expressions have the same referent
- Referent informational influence
- Edward n. lorenz
- Türkiye lorenz eğrisi
- Curva de lorenz generalizada
- Svisle a vodorovně
- Brigitte lorenz md
- Curva de lorenz colombia
- Widerruf rechtsvernichtende einwendung
- Birgy lorenz
- Konrad lorenz ochetta martina
- Edward norton lorenz
- Marcus lorenz
- Ethological theory of human development
- Pengertian kurva lorenz
- Gunnar lorenz
- Prof. stephan lorenz
- Lorenz neues kaufrecht
- Prof lorenz heidelberg
- Courbe de lorenz
- Ikea swiss
- Lorenz forces
- Kurva philip
- Lorenz lloyd fischer
- Schuldrecht at lorenz
- Walter lorenz
- Tipos de desigualdad
- Allison
- 2009 marshall cavendish international
- 2009 mathematics standards of learning answers
- 44 tahun 2009
- Classification and division essay example