[CB-Logo]
Compilerbau I WS97/98
Übungen

Blatt 1

Abgabe: Montag, 27.10.1997

(ggf. Lösungen)

[Compilerbau-Homepage]

Aufgabe 1 (6Pkt)

Handelt es sich bei den folgenden Programmen um Compiler, Interpreter, beides, oder keines von beiden? Begründen Sie ggf. Ihre Antwort.
  1. /share/Java/JDK-1.1.3/sparc-sun-solaris2/jdk1.1.3/bin/javac (Java)
  2. /usr/local/bin/perl5 (Perl Version 5)
  3. /usr/o0/sparc-sun-solaris2/bin/gm4 (GNU M4)
  4. /usr/local/bin/xlisp (ein LISP)
  5. /usr/o0/sparc-sun-solaris2/bin/f2c

Aufgabe 2 (4Pkt)

Sie verfügen über einen C-Source eines großen Programms P, und den C-Source eines C-Compilers, und eine ausführbare Version des C-Compilers für die Maschine M1. Sie möchten das Programm P für eine Maschine M2 übersetzen, auf der kein C-Compiler existiert. Wie gehen Sie vor? Was müssen Sie ggf. "von Hand" machen? Beschreiben Sie Ihr Vorgehen mit T-Diagrammen!

Aufgabe 3 (4Pkt)

Würde sich Ihr Vorgehen bei Aufgabe 2 ändern, wenn Sie regelmäßig Programme für die Maschine M2 übersetzen müßten? Wenn ja, wie? Wo spielen dann Effizienzbetrachtungen eine Rolle? Wo können Sie ggf. durch bootstrap-Technik optimieren?

Aufgabe 4 (6Pkt)

Gegeben Sie das C-Programm
      int main(void) {
          return( 6 * 7);
      }
      
  1. Geben Sie die Ausgabe der lexikalischen Analyse (parsing) als symbolische Tokenfolge an.
  2. Geben Sie zur "return"-Zeile den abstrakten Baum der syntaktischen Analyse an.
  3. Versuchen Sie, ähnlich dem in der Vorlesung vorgestellten Beispiel den Zielcode anzugeben.

[Compilerbau-Homepage]
IfI Mathe WWU

Dietmar Lammers
Last modified: Fri Oct 17 13:51:08 MET DST 1997