• Keine Ergebnisse gefunden

Lehrstuhl f¨ ur Programmierparadigmen

N/A
N/A
Protected

Academic year: 2022

Aktie "Lehrstuhl f¨ ur Programmierparadigmen"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Universit¨ at Karlsruhe (TH)

Lehrstuhl f¨ ur Programmierparadigmen

Sprachtechnologie und Compiler II SS 2009 http://pp.info.uni-karlsruhe.de/

Dozent: Prof. Dr.-Ing. G. Snelting snelting@ipd.info.uni-karlsruhe.de Ubungsleiter: Matthias Braun¨ braun@ipd.info.uni-karlsruhe.de

Ubungsblatt 4¨ Ausgabe: 3.6.2009 Besprechung: 9.6.2009

Aufgabe 1:Datenflussanalyse 1.1Reaching Definitions Analysis

Gegeben ist das folgende Programm in der While-Sprache:

[z:= 0]1;while[x6=y]2do( [z:=z+ 1]3;if[x >4]4then[x:=x−y]5else[y:=y−x]6); [a:=x]7 Auf welcher Menge operiert die Reaching Definitions Analysis?

F¨uhre eine Reaching Definitions Analysis f¨ur das Programm durch. Erstelle daf¨ur zun¨achst eine Tabelle mit den Gen- und Kill-Mengen der einzelnen Bl¨ocke und f¨uhre danach eine Fixpunktiteration durch.

Wie sehen Ergebnisse einer Reaching Definitions Analysis f¨ur Programme in SSA-Form aus?

1.2Next-Use Analyse

Sie wollen einen Algorithmus entwerfen der Programmvariablen abh¨angig von der Entfernung zu ihrere n¨achsten Verwendung ausw¨ahlt. Um die Entfernung f¨ur allgemeine Ablaufgraphen zu berechnen sollten einige Regeln beachtet werden:

• Gibt es an einer Gabelung im Ablaufgraph mehrere n¨achste Verwendungen, so soll der kleinste Wert ubernommen werden. Im folgenden Beispiel liegt die n¨¨ achste Benutzung vonxalso vor der vony.

y ←

x ← S

...

← x R L

← y

← x E

• Da Schleifen typischerweise erst einmal im Kreis laufen, bevor Sie verlassen werden, wird beim Verlassen der Schleife die Anzahl der Befehle innerhalb der Schleife addiert. Die n¨achste Benutzung vonyinnerhalb der Schleife ist also der eigentliche Next-Use Wert plus die Anzahl der Befehle in der Schleife (hier alsB bezeichnet):

(2)

y ←

x ← S

..

. LH

.. .

← x LB

← y E dist. +B

Entwerfen Sie ein geeignete Datenflußanalyse um Entfernungen bis zur n¨achsten Benutzung zu bestimmen!

• Auf welchen Mengen wird operiert?

• Sind wir an der kleinsten oder der gr¨oßten L¨osung interessiert?

• Wie stehen die Next-Use Analyse und Liveness Analyse miteinander in Beziehung?

• F¨uhren Sie ein Next-Use Analyse auf dem folgenden Programm durch:

i n t f o o ( v o i d ) {

i n t a = 1 0 ; i n t b = rand ( ) ; w h i l e ( a < 1 0 0 ) {

i n t c = a ∗ 2 ; i f ( a > 8 0 ) {

p r i n t f (”%d\n ” , c ) ; }

a = a +2;

}

r e t u r n b ; }

2

Referenzen

ÄHNLICHE DOKUMENTE

Die Big-Step und Small-Step-Semantiken verwenden f¨ ur Ausdr¨ ucke die Semantikfunktionen A J K und B J K , die f¨ ur alle Ausdr¨ ucke und Zust¨ ande definiert sind und in einem

Typsicherheit l¨ asst sich auch f¨ ur eine Big-Step-Semantik zeigen, in dieser Aufgabe f¨ ur While T : (a) ¨ Andern Sie die Auswertungsrelation so, dass eine Anweisung mit einem

4.1 wurde eine Small-Step-Semantik f¨ ur die idealisierte Assembler-Sprache ASM

Wurde ein Bezeichner erkannt, so soll in der Symboltabelle nachgeschlagen (find or insert symbol (”symbolstring”)) werden welchem Token-Typ er entspricht (symbol−&gt;id). Dazu muss

Die Menge der nat¨ urlichen Zahlen N l¨ asst sich als Teilmenge der reellen Zahlen R wie folgt definieren:.. (a) 0 ist eine nat¨

5.3 haben wir die While-Sprache um Bl¨ ocke mit lokalen Variablen erweitert und operatio- nale Semantiken daf¨

Insbesondere f¨ ur Datenflussanalysen die nur Aussagen ¨ uber einzelne Werte machen (und nicht ¨ uber Beziehungen zwischen Werte) ist es trivial die Datenfluss- analyse als

Somit l¨ asst sich nicht garantieren, dass die L¨ osung als F¨ arbung f¨ ur das urspr¨ ungliche Programm