• Keine Ergebnisse gefunden

Karlsruher Institut f¨ur Technologie Lehrstuhl f¨ur Programmierparadigmen

N/A
N/A
Protected

Academic year: 2022

Aktie "Karlsruher Institut f¨ur Technologie Lehrstuhl f¨ur Programmierparadigmen"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Karlsruher Institut f¨ ur Technologie

Lehrstuhl f¨ ur Programmierparadigmen

Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting

Ubungsleiter: Matthias Braun¨ matthias.braun@kit.edu Ubungsblatt 9¨ Ausgabe: 18.06.2012 Besprechung: 25.06.2012

Aufgabe 1:Aufrufkonventionen

Beschreiben Sie die Aufraufkonventionen (Calling Conventions) von 2 der folgenden Prozessorarchitekturen auf einem Betriebssystem Ihrer Wahl:

1. IA-32 2. PowerPC

3. AMD-64/Intel 64 4. ARM

5. MIPS 6. Sparc (V8)

Suchen Sie hierzu im Internet nach den entsprechenden Dokumenten im Internet (z.B. auf den Herstellerseiten).

Geben Sie f¨ur jede der von Ihnen gew¨ahlten Plattformen an, wie die Argumente beim Aufruf folgender C- Funktion ¨ubergeben werden. Wie wird der R¨uckgabewert zur¨uck gegeben?

struct test struct { int x;

int y;

};

int foobar(int i , charc, doubled, intj, struct test struct s) { return42;

}

Aufgabe 2:Activation Records Gegeben folgendes Programm:

int iterations ; int fib (intx) {

int r ;

iterations ++;

if (x == 0){ r = 0;

} else if (x == 1) { r = 1;

} else {

r = fib(x−1) + fib(x−2);

}

returnr;

1

(2)

}

int main(void) {

int input;

scanf(”%d”, &input);

printf (”Result: %d, needed %d iterations\n”, fib(input), iterations );

return0;

}

Stellen Sie sich einen nicht optimierenden Compiler vor, der alle Variablen auf dem Stack ablegt. Außerdem verlangt die Aufrufkonvention dass alle Argumente auf dem Stack ¨ubergeben werden. Der Prozessor selbst legt beim Betreten einer Funktionen die R¨ucksprungadresse auf den Stack.

Stellen Sie die Struktur des Stacks unmittelbar vor dem Aufruf der Funktion fib dar und nach dem 2. Rekur- sionsschritt der Funktion fib .

Aufgabe 3:Array-Adressierung

Geben Sie f¨ur ein 4-dimensionales Arraya[−10..10,−20..20,30..42,0..100] von 32-Bit Ganzzahlen den erzeugten Zwischencode (Bytecode oder Tripelcode) zur Adressberechnung gem¨aß Hornerschema an. Berechnen Sie zuvor die korrekte virtuelle Anfangsadresseadr(a[0,0,0,0]). Sie d¨urfen annehmen, dass dielµCompilezeitkonstanten sind.

2

Referenzen

ÄHNLICHE DOKUMENTE

(5) Alle Strings aus a und b mit einer geraden Anzahl von a und einer ungeraden Anzahl von b (Denksport- aufgabe). Aufgabe 4: Regul¨ are

Enth¨ alt die Zahl einen Punkt, so darf der Buchstabe e oder E angeh¨ angt werden, gefolgt von einem optionalen + oder - und weiteren Ziffern.. Zus¨ atzlich soll bei T NUMBER Tokens

Wenn wir versuchen, eine LR- Parsertabelle daf¨ ur zu erstellen, ergeben sich Konflikte zwischen einigen Aktionen.. Welche

Wie kann man dies anhand der Parsertabelle begr¨

Ubersetzen Sie den Ausdruck ¨ this.x = 32 - this.foo()[2] in Java Bytecode, geben Sie auch einen passenden Konstantenpool an?. (foo ist eine

Idee: durchlaufe Programm r¨ uckw¨ arts, ab einer Benutzung ist eine Variable lebendig, ab einer Definition tot?. gen enth¨ alt Variablen die Benutzt werden, kill Variablen

Sprachtechnologie und Compiler, Sommersemester 2014 Dozent: Prof.. Was f¨ allt

Schreiben Sie mehrere kleine Testprogramme und vergleichen Sie den generierten x86-64-Assemblers f¨ ur zwei optimierende Compiler.. K¨ onnen Sie