• Keine Ergebnisse gefunden

Lehrstuhl f¨ ur Programmierparadigmen

N/A
N/A
Protected

Academic year: 2022

Aktie "Lehrstuhl f¨ ur Programmierparadigmen"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Universit¨ at Karlsruhe (TH)

Lehrstuhl f¨ ur Programmierparadigmen

Compiler II SS 2008 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 2¨ Ausgabe: 5.5.2008 Besprechung: 19.5.2008

Achtung: Am 12.5. ist Pfingstmontag, die Besprechung findet deshalb eine Woche sp¨ater am 19.5. statt.

Aufgabe 1:Verb¨ande 1.1Rechenregeln

Beweisen sie die aus der Vorlesung bekannten Rechenregeln:

• xtx=x

• xty=ytx

• xt(ytz) = (xty)tz

• xux=x

• xuy=yux

• xu(yuz) = (xuy)uz

1.2Distributivit¨at

Verb¨ande sind im allgemeinen nicht distributiv. Finden sie ein Gegenbeispiel f¨ur:

• xu(ytz) = (xuy)t(xuz)

• xt(yuz) = (xty)u(xtz)

1.3Galois-Verbindungen

>

even odd

2 0

Die Abbildung zeigt den vollst¨andigen Verband (M,v). Gegeben sei weiterhin der Pozenzmengenverband ¨uber den ganzen ZahlenZund die Funktionγ:M →℘(Z) mit:

γ(>) =Z γ(even) =γ(0)∪γ(2) γ(odd) ={z∈Z|zmod 2 = 1}

γ(0) ={z∈Z|zmod 4 = 0} γ(2) ={z∈Z|zmod 4 = 2} γ(⊥) =∅

Zeigen oder widerlegen Sie, dass zwischen den gegebenen Verb¨anden eine Galois-Verbindung besteht.

(2)

Compiler II SS 2008 Ubungsblatt 2¨ S. 2

Aufgabe 2:Lebendigkeitsanalyse

Eine Variablexheißt lebendigan einem Punktp, wenn der Wert entlang eines Pfades beginnend mitpbenutzt wird. Mit anderern Worten: “Welche Variablen werden vor einer Neuzuweisung noch benutzt?”

2.1Datenflußgleichungen

Definieren Sie die entsprechenden Datenflußgleichungen.

2.2CFG Beispiel

Betrachten Sie das Programm

1: c := 0;

2: while not a=0 do 3: c:= c+b;

4: a:= a-1;

od;

5: return c

Wie sieht der Steuerflußgraph dieses Programms aus?

2.3Lebendigkeitsanalyse

F¨uhren Sie eine Lebendigkeitsanalyse am vorherigen Beispiel durch.

(3)

Compiler II SS 2008 Ubungsblatt 2¨ S. 3

Aufgabe 3:Programmabh¨angigkeitsgraph 3.1PDG

Zeichnen sie den PDG f¨ur folgendes Programm:

1 int count = 0;

2 int k = rand();

3 int k2 = rand();

4

5 if (k)

6 k = k + 5;

7

8 while(k<k2){ 9 count += 2;

10 if (rand())

11 count−= 5;

12 if (count % 13)

13 break;

14 } 15

16 printf (”finished ”);

3.2Kontrollabh¨angigkeit

Zeigen oder widerlegen sie: Der Kontrollabh¨angigkeitsgraph ist ein Baum.

Referenzen

ÄHNLICHE DOKUMENTE

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

Andreas Lochbihler Joachim Breitner andreas.lochbihler@kit.edu breitner@kit.edu. Semantik von Programmiersprachen –

Dann muss man allerdings neu ¨ uber syntaktischen Zucker f¨ ur arithmetische und boolesche Ausdr¨ ucke nachdenken: Eine Addition w¨ urde dann ggf.. l¨ anger dauern als

Die Maschine, auf der die ¨ ubersetzten Ausdr¨ ucke abgearbeitet werden sollen, nimmt eine Liste von Instruktionen, einen (anfangs leeren) Stack und einen Zustand mit der

Beachte dass sich diese Implementierung nicht direkt mit der Implementierung von for mittels while kombinieren l¨ asst, da auch bei continue die Z¨ ahlvariable erh¨ oht werden

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