Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Christian Scheideler SS 2009
Vorlesung Compilertechnik Sommersemester 2008
Polynomial Root Isolation
Steigung m berechnen Man kann die Steigung auch berechnen,
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
Frame-Logik Eine Einführung Andreas Glausch.
Prof. Dr. W. Conen 15. November 2004
Suche in Texten (Stringsuche )
Finale Semantik und beobachtbares Verhalten
Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 4 / 1 Termalgebren Definition "Freie Algebra" Die -Algebra A = [A, F ] heißt.
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
der Universität Oldenburg
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
Das Halteproblem. Gibt es einen Algorithmus, mit dem man für jedes beliebig vorgegebene Programm R und für jede beliebig vorgegebene Eingabe E entscheiden.
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Schleifen-beobachtung
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Kapitel 5 Stetigkeit.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Einführung in Berechenbarkeit, Formale Sprachen und Komplexitätstheorie Wintersemester 2005/ Vorlesung Dominic Dumrauf.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Visualisierung funktionaler Programme
Variationsformalismus für das freie Teilchen
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Effiziente Algorithmen
Maschinenunabhängige Codeoptimierung
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation
§23 Basiswechsel und allgemeine lineare Gruppe
Gleichungen und Gleichungssysteme
Lernprogramm : „Quadratische Funktionen“
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
PHP: Operatoren und Kontrollstrukturen
Code-Optimierung Philipp Bergener Seminar „Übersetzung künstlicher Sprachen“
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
Analyse der Laufzeit von Algorithmen
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Institut für Softwarewissenschaft – Universität WienP.Brezany 1 Beispiele (Frist: ) Beispiel 1: Sei  = {a, b} ein Alphabet und Q = {q 0, q 1 } eine.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Gliederung der Vorlesung
Lineare Gleichungen Allgemeine Einführung Äquivalenzumformungen
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Lineare Optimierung Nakkiye Günay, Jennifer Kalywas & Corina Unger Jetzt erkläre ich euch die einzelnen Schritte und gebe Tipps!
Gliederung 0. Motivation und Einordnung 1. Endliche Automaten
REKURSION + ITERATION.
Wahlteil 2014 – Analysis A 1 Aufgabe A 1.1
 Präsentation transkript:

Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag:

Folie 2 Agenda - Einleitung - Einführung in die Sprache WHILE - Die Intraprozedurale Analyse - Available Expressions Analysis - Reaching Definitions Analysis - Very Busy Expressions Analysis - Live Variables Analysis - Live Variables Analysis - Richtigkeit

Folie 3 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?

Folie 4 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

Folie 5 Einführung in WHILE Die Sprache: WHILE - Imperative Sprache - Programmcode glieder sich in Blöcke - Jeder Block besitzt ein eindeutiges Etikett (Label) - Bezeichnen Zuweisungen und boolsche Bedingungen - Haben intern keinen Datenfluss Folgende Elemente werden definiert: o Zuweisung [x := a] o Skip [skip] o Bedingung if [b] then S 1 else S 2 o SequenzS 1 ; S 2 o While-Schleifewhile [b] do S

Folie 6 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

Folie 7 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…

Folie 8 Intraprozedurale Analyse - Flussgraph [z:=1] [x>0] [z:=z*y] [x:=x-1] no yes

Folie 9 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:

Folie 10 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)

Folie 11 Available Expressions Analysis kill- und gen-Funktionen bei AEA

Folie 12 Available Expressions Analysis Entry- & Exit-Funktionen Durch diese beiden Funktionen wird die Analyse bestimmt: Falls:

Folie 13 Available Expressions Analysis – Beispiel1 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

Folie 14 Available Expressions Analysis – Beispiel1 Gesucht wird: größte Lösung der Gleichung für AE entry Bestimmen der AE-Gleichungen:

Folie 15 Available Expressions Analysis – Beispiel1 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)

Folie 16 Available Expressions Analysis – Beispiel2 Beispiel 2: Aufstellen der kill & gen Funktionen:

Folie 17 Available Expressions Analysis – Beispiel2 Aufstellen der AE-Funktionen:

Folie 18 Available Expressions Analysis – Beispiel2 Als Ergebnis erhält man folgende Tabelle: [x:=a+b] [y:=a*b] [y>a+b] [a:=a+1] [x:=a+b]

Folie 19 Available Expressions Analysis – Beispiel2 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

Folie 20 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)

Folie 21 Reaching Definition Analysis - Vorgehensweise Vorgehensweise o Definieren der kill RD, gen RD, RD entry und RD exit funktionen:

Folie 22 Reaching Definition Analysis - Vorgehensweise

Folie 23 Reaching Definition Analysis - Beispiel o Funktionen am Programmteil anwenden: Beispiel: Es entsteht folgende Tabelle der kill & gen Funktionen:

Folie 24 Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (1): _______________________________________________________

Folie 25 Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (2): _______________________________________________________

Folie 26 Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (3): _______________________________________________________

Folie 27 Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (4): _______________________________________________________

Folie 28 Reaching Definition Analysis - Beispiel Damit ergibt sich für die RD Funktionen (5): _______________________________________________________ Somit sind alle RD-Funktionen aufgelöst. Deutung: Man erkennt nun, welche Zuweisung an welcher Stelle existiert!

Folie 29 Very Busy Expressions Analysis o Ein Ausdruck wird als „very busy“ bezeichnet, wenn: - am Ende eines Labels sichergestellt ist, dass er im weiteren Verlauf auf 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

Folie 30 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!

Folie 31 Very Busy Expressions Analysis o Hier gleich angewendet (allgemeine Formeln nachlesen!) o kill & gen Funktionen: o VB Funktionen:

Folie 32 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.

Folie 33 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

Folie 34 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.

Folie 35 Live Variables Analysis Definitionen der kill, gen und LV Funktionen:

Folie 36 Live Variables Analysis Analyse nach Aufstellen der gen, kill und LV Funktionen ergibt folgendes:

Folie 37 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“

Folie 38 Live Variables Analysis - Richtigkeit Die Richtigkeit der Live Variables Analysis o Um Richtigkeit zu zeigen, benutzen wir folgendes Theorem: 1. 2.

Folie 39 Live Variables Analysis - Richtigkeit Veranschaulichung am Beispiel:, V1 = {y,z} und V2 = {x} o o Nach Theorem und folgt, dass wenn V2 nach dem Block live ist, muss V1 davor live sein.

Folie 40 Servus Vielen Dank für die Aufmerksamkeit!