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

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

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

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Folie 40

Servus

Vielen Dank für die Aufmerksamkeit!