datenflussanalyse - klassisch seminar “progammanalyse” (ss 2009) referent: lorenz schauer...
TRANSCRIPT
![Page 1: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/1.jpg)
Datenflussanalyse - KlassischSeminar “Progammanalyse” (SS 2009)
Referent: Lorenz SchauerVortrag: 24.06.2009
![Page 2: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/2.jpg)
Folie 2
Agenda
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
![Page 3: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/3.jpg)
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?
![Page 4: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/4.jpg)
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
![Page 5: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/5.jpg)
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 S1 else S2 o Sequenz S1 ; S2
o While-Schleife while [b] do S
l
l
l
l
![Page 6: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/6.jpg)
Folie 6
Intraprozedurale Analyse
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
R
![Page 7: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/7.jpg)
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…
)]1:[;]*:([]0[;]1:[ 4321 xxyzzdoxwhilez
![Page 8: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/8.jpg)
Folie 8
Intraprozedurale Analyse - Flussgraph
[z:=1]
[x>0]
[z:=z*y]
[x:=x-1]
no
yes
)]1:[;]*:([]0[;]1:[ 4321 xxyzzdoxwhilez
![Page 9: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/9.jpg)
Folie 9
Available Expressions Analysis
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: )]:[;]1:([][;]*:[;]:[ 54321 baxaadobaywhilebaybax
![Page 10: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/10.jpg)
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).
killAE : Blocks P(AExp)
Gen-Funktion: Ausdruck wird im Programmbereich generiert und
keine Variable davon innerhalb des Blocks verändert.
genAE : Blocks P(AExp)
![Page 11: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/11.jpg)
Folie 11
Available Expressions Analysis
kill- und gen-Funktionen bei AEA
)}'(|'{)]:([ * aFVxAExpaaxkill lAE
{})]([ lAE skipkill
{})]([ lAE bkill
)()]([
{})]([
)}'(|)('{)]:([
bAExpbgen
skipgen
aFVxaAExpaaxgen
lAE
lAE
lAE
![Page 12: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/12.jpg)
Folie 12
Available Expressions Analysis
Entry- & Exit-Funktionen
Durch diese beiden Funktionen wird die Analyse bestimmt:
)(:, ** AExpPLabAEAE exitentry
)}(),'(|)'({)(
{})(
*SflowlllAElAE
lAE
exitentry
entry
)( *Sinitl Falls:
)(
)())(\)(()(
*SblocksB
BgenBkilllAElAEl
lAE
lAEentryexit
![Page 13: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/13.jpg)
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:
''' ][][;]:[ lll skipdotruewhileyxz
[…]
[…]
[…]
l
'l
''l
no
yes
![Page 14: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/14.jpg)
Folie 14
Available Expressions Analysis – Beispiel1
Gesucht wird: größte Lösung der Gleichung für AEentry
Bestimmen der AE-Gleichungen:
)''()''(
)'()'(
}{)()(
)'()''(
)''()()'(
{})(
lAElAE
lAElAE
yxlAElAE
lAElAE
lAlAElAE
lAE
entryexit
entryexit
entryexit
exitentry
exitexitentry
entry
''' ][][;]:[ lll skipdotruewhileyxz
![Page 15: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/15.jpg)
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)
)'(}{)'( lAEyxlAE entryentry
![Page 16: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/16.jpg)
Folie 16
Available Expressions Analysis – Beispiel2
Beispiel 2:
Aufstellen der kill & gen Funktionen:
----------------------------------------------------
)]:[;]1:([][;]*:[;]:[ 54321 baxaadobaywhilebaybax
54321l
{}}1,*,{
{}{}{}
)(
ababa
lkillAE
}{{}
}{}*{}{
)(
ba
bababalgenAE
![Page 17: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/17.jpg)
Folie 17
Available Expressions Analysis – Beispiel2
Aufstellen der AE-Funktionen:
)4()5(
)3()4(
)5()2()3(
)1()2(
{})1(
exitentry
exitentry
exitexitentry
exitentry
entry
AEAE
AEAE
AEAEAE
AEAE
AE
}{)5()5(
}1,*,{\)4()4(
}{)3()3(
}*{)2()2(
}{)1()1(
baAEAE
ababaAEAE
baAEAE
baAEAE
baAEAE
entryexit
entryexit
entryexit
entryexit
entryexit
)]:[;]1:([][;]*:[;]:[ 54321 baxaadobaywhilebaybax
![Page 18: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/18.jpg)
Folie 18
Available Expressions Analysis – Beispiel2
Als Ergebnis erhält man folgende Tabelle:
----------------------------------------------
54321l
{}}{}{}{
{}
)(
bababa
lAEentry
}{{}
}{}*,{
}{)(
ba
bababa
balAEexit
)]:[;]1:([][;]*:[;]:[ 54321 baxaadobaywhilebaybax
[x:=a+b]
[y:=a*b]
[y>a+b]
[a:=a+1]
[x:=a+b]
![Page 19: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/19.jpg)
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
![Page 20: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/20.jpg)
Folie 20
Reaching Definition Analysis
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)
)]:[;]1:([][;]*:[;]:[ 54321 baxaadobaywhilebaybax
![Page 21: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/21.jpg)
Folie 21
Reaching Definition Analysis - Vorgehensweise
Vorgehensweise
o Definieren der killRD, genRD, RDentry und RDexit funktionen:
{})]([
{})]([
)},{()]:([
{})]([
{})]([
)}(__|)',{(?)},{()]:([ *'
lRD
lRD
lRD
lRD
lRD
llRD
bgen
skipgen
lxaxgen
bkill
skipkill
SxtoasgmBlxxaxkill
![Page 22: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/22.jpg)
Folie 22
Reaching Definition Analysis - Vorgehensweise
)(
)())(\)(()(
)}(),'(|)'({
)()}(|?),{()(
*
*
**
SblocksBwo
BgenBkilllRDlRD
SflowlllRD
SinitlifSFVxxlRD
l
lRD
lRDentryexit
entry
entry
![Page 23: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/23.jpg)
Folie 23
Reaching Definition Analysis - Beispiel
o Funktionen am Programmteil anwenden:
Beispiel:
Es entsteht folgende Tabelle der kill & gen Funktionen:
-------------------------------------------------------------------------12345
)]1:[;]*:([]1[;]1:[;]5:[ 54321 xxyxydoxwhileyx
)}5,(),1,(?),,{()}4,(),2,(?),,{(
{})}4,(),2,(?),,{(
)}5,(),1,(?),,{()(
xxxyyy
yyyxxx
lkillRD
)}5,{()}4,{(
{})}2,{()}1,{(
)(
xy
yx
lgenRD
![Page 24: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/24.jpg)
Folie 24
Reaching Definition Analysis - Beispiel
Damit ergibt sich für die RD Funktionen (1):
_______________________________________________________12345 )4(
)3()5()2(
)1(?)},(?),,{(
)(
exit
exit
exitexit
exit
entry
RDRD
RDRDRD
yx
lRD
)}5,{()})5,(),1,(?),,{(\)5((
)}4,{()})4,(),2,(?),,{(\)4((
)3(
)}2,{()})4,(),2,(?),,{(\)2((
)}1,{()})5,(),1,(?),,{(\)1(()(
xxxxRD
yyyyRD
RD
yyyyRD
xxxxRDlRD
entry
entry
entry
entry
entry
exit
)]1:[;]*:([]1[;]1:[;]5:[ 54321 xxyxydoxwhileyx
![Page 25: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/25.jpg)
Folie 25
Reaching Definition Analysis - Beispiel
Damit ergibt sich für die RD Funktionen (2):
_______________________________________________________123
45 )}4,{()})4,(),2,(?),,{(\)4((
)3(
)}5,{()})5,(),1,(?),,{(\)5((
)}2,{()})4,(),2,(?),,{(\)2((
)}1,{()})5,(),1,(?),,{(\)1((?)},(?),,{(
)(
yyyyRD
RD
xxxxRD
yyyyRD
xxxxRDyx
lRD
entry
entry
entry
entry
entry
entry
)}5,{()})5,(),1,(?),,{(\)4(()}4,{()})4,(),2,(?),,{(\)3((
)5()2()}2,{()})4,(),2,(?),,{(\)1((
)}1,{()})5,(),1,(?),,{(\?)},(?),,({()(
xxxxRDyyyyRD
RDRDyyyyRDxxxxyx
lRD
exit
exit
exitexit
exit
exit
)]1:[;]*:([]1[;]1:[;]5:[ 54321 xxyxydoxwhileyx
![Page 26: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/26.jpg)
Folie 26
Reaching Definition Analysis - Beispiel
Damit ergibt sich für die RD Funktionen (3):
_______________________________________________________123
4
5 )}4,{()})4,(),2,(?),,{(\)3((
)3()}5,{()}4,{(
)})4,(),2,(?),,(),5,(),1,(?),,{(\)4(()}2,{()})4,(),2,(?),,{(\)}1,(?),,({(
)}1,{()})5,(),1,(?),,{(\?)},(?),,({(?)},(?),,{(
)(
yyyyRD
RDxy
yyyxxxRDyyyyxyxxxxyx
yx
lRD
entry
entry
entry
entry
)}5,{()})5,(),1,(?),,{(\)4(()}4,{(
)})4,(),2,(?),,{(\)5()}2,(),1,({(
)5()}2,(),1,{()}2,{()})4,(),2,(?),,{(\)}1,(?),,({(
)}1,(?),,{()(
xxxxRDy
yyyRDyx
RDyxyyyyxy
xylRD
exit
exit
exit
exit
)]1:[;]*:([]1[;]1:[;]5:[ 54321 xxyxydoxwhileyx
![Page 27: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/27.jpg)
Folie 27
Reaching Definition Analysis - Beispiel
Damit ergibt sich für die RD Funktionen (4):
_______________________________________________________12345 )}4,{()})4,(),2,(?),,{(\)3((
)}5,(),4,(),2,(),1,{()}5,(),4,(),2,(),1,{(
)}1,(?),,{(?)},(?),,{(
)(
yyyyRDxyyxxyyx
xyyx
lRD
entry
entry
)}5,{()})5,(),1,(?),,{(\)4(()}5,(),4,(),1,{(
)5()}2,(),1,{()}2,(),1,{()}1,(?),,{(
)(
xxxxRDxyxRDyx
yxxylRD
exit
exit
exit
)]1:[;]*:([]1[;]1:[;]5:[ 54321 xxyxydoxwhileyx
![Page 28: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/28.jpg)
Folie 28
Reaching Definition Analysis - Beispiel
Damit ergibt sich für die RD Funktionen (5):
_______________________________________________________12345
Somit sind alle RD-Funktionen aufgelöst.
Deutung: Man erkennt nun, welche Zuweisung an welcher Stelle existiert!
)}5,(),4,(),1,{()}5,(),4,(),2,(),1,{()}5,(),4,(),2,(),1,{(
)}1,(?),,{(?)},(?),,{(
)(
xyxxyyxxyyx
xyyx
lRDentry
)}5,(),4,{()}5,(),4,(),1,{(
)}5,(),4,(),2,(),1,{()}2,(),1,{()}1,(?),,{(
)(
xyxyx
xyyxyxxylRDexit
)]1:[;]*:([]1[;]1:[;]5:[ 54321 xxyxydoxwhileyx
![Page 29: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/29.jpg)
Folie 29
Very Busy Expressions Analysis
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
![Page 30: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/30.jpg)
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!
)]:[;]:([)]:[;]:([][ 54321 baxabyelsebayabxthenbaif
![Page 31: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/31.jpg)
Folie 31
Very Busy Expressions Analysis
o Hier gleich angewendet (allgemeine Formeln nachlesen!)
o kill & gen Funktionen:
o VB Funktionen:
}{{}5}{{}4}{{}3}{{}2
{}{}1)()(
baabbaab
lgenlkilll VBVB
{}}{5)5(}{)4(4
{}}{3)3(}{)2(2
)4()2()1(1)()(
baVBabVB
baVBabVB
VBVBVBlVBlVBl
entryexit
entryexit
entryentryexit
exitentry
![Page 32: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/32.jpg)
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.
{}}{5}{},{4
{}}{3}{},{2
},{},{1)()(
babaabba
babaabbaabbaabbalVBlVBl exitentry
![Page 33: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/33.jpg)
Folie 33
Live Variables Analysis
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
![Page 34: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/34.jpg)
Folie 34
Live Variables Analysis
Beispiel:
Frage: Welche variablen sind zu welchem Zeitpunkt „live“?
Antwort: x nach Label 1 ist nicht livex nach Label 3 livey nach Label 2 live
=> Erste Zuweisung ist Redundant, kann also gelöscht werden.
7654321 ]:[);]*:[]:[][(;]1:[;]4:[;]2:[ zxyyzelseyzthenxyifxyx
![Page 35: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/35.jpg)
Folie 35
Live Variables Analysis
Definitionen der kill, gen und LV Funktionen:
)()())(\)(()(
)}(),'(|)'({)({}
)(
)()]([
{})]([
)()]:([
{})]([
{})]([
}{)]:([
*
*
*
SblocksBwoBgenBkilllLVlLV
SflowlllLVSfinallfalls
lLV
aFVbgen
skipgen
aFVaxgen
bkill
skipkill
xaxkill
llLV
lLVexitentry
Rentry
exit
lLV
lLV
lLV
lLV
lLV
lLV
![Page 36: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/36.jpg)
Folie 36
Live Variables Analysis
Analyse nach Aufstellen der gen, kill und LV Funktionen ergibt folgendes:
}{}{7}{}{6}{}{5},{4
}{3}{2}{1
)()(
zxyzyzyx
xyx
lgenlkilll LVLV
}{7)7(}{}){\)6((6)7(}{}){\)5((5
)6()5(},{)4(4)4(}{\)3(3)3(}{\)2(2)2(}{\)1(1)()(
zLVyzLVLVyzLV
LVLVyxLVLVxLVLVyLVLVxLV
lLVlLVl
entryexit
entryexit
entryentryexit
entryexit
entryexit
entryexit
exitentry
![Page 37: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/37.jpg)
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“
{}}{7}{}{6}{}{5}{},{4},{}{3
}{{}2{}{}1
)()(
zzyzyyyxyxyy
lLVlLVl exitentry
![Page 38: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/38.jpg)
Folie 38
Live Variables Analysis - Richtigkeit
Die Richtigkeit der Live Variables Analysis
o Um Richtigkeit zu zeigen, benutzen wir folgendes Theorem:
1.
2.'2))((
'1
'22
'2
2))((1'11
'2))((
'1
'2
'2
'2
2))((1'1
'1
~,:
~,
~,,:
~,,
'
SinitX
SinitN
SinitN
SinitN
undS
dannundSfalls
undundSS
dannundSSfalls
![Page 39: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/39.jpg)
Folie 39
Live Variables Analysis - Richtigkeit
Veranschaulichung am Beispiel:
, V1 = {y,z} und V2 = {x}
o
o
o
o Nach Theorem und folgt, dass wenn V2 nach dem Block live ist, muss V1 davor live sein.
1,]:[ lzyx
)()()()(~ 2121211 zzyyV
)()(~ 21221 xxV
'22
'11 ,]:[,]:[ ll zyxzyx
'22
'1211 ~~ VV
![Page 40: Datenflussanalyse - Klassisch Seminar “Progammanalyse” (SS 2009) Referent: Lorenz Schauer Vortrag: 24.06.2009](https://reader035.vdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da874/html5/thumbnails/40.jpg)
Folie 40
Servus
Vielen Dank für die Aufmerksamkeit!