summaryrefslogtreecommitdiffstats
path: root/doc/praes1/main.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/praes1/main.tex')
-rw-r--r--doc/praes1/main.tex185
1 files changed, 185 insertions, 0 deletions
diff --git a/doc/praes1/main.tex b/doc/praes1/main.tex
new file mode 100644
index 0000000..e924838
--- /dev/null
+++ b/doc/praes1/main.tex
@@ -0,0 +1,185 @@
+\documentclass[9pt]{beamer}
+
+\usepackage[utf8x]{inputenc}
+\usepackage[english]{babel}
+\usepackage{arev,t1enc}
+
+\include{fu-beamer-template}
+
+\titleimage{fu_500}
+\title[Compilerbau]
+{Zwischenpr\"{a}sentation 1}
+
+\author{B.~B\"{o}hm \and A.~N\"{u}\ss{}lein \and M.~Popov \and T.~Rakowski \and J.~Rekittke \and A.~Sulfrian}
+
+\institute[FU Berlin]
+{Freie Universität Berlin}
+
+\date[May~26,~2009]
+{Softwareprojekt Compilerbau, SoSe 2009}
+
+\renewcommand{\footlinetext}{\insertshortinstitute, \insertshorttitle, \insertshortdate}
+%\AtBeginSubsection[]
+%{
+% \begin{frame}<beamer>{Outline}
+% \tableofcontents[currentsection,currentsubsection]
+% \end{frame}
+%}
+
+
+\begin{document}
+
+\begin{frame}[plain]
+ \titlepage
+\end{frame}
+
+
+\begin{frame}{Gruppe: Quellsprache}
+ \begin{itemize}
+ \pause\item\color{fu-green} erfinden der Quellsprache
+ \begin{itemize}
+ \pause\item\color{fu-green} Paradigma: imperativ, prozedural
+ \pause\item\color{fu-green} Typsystem: static, weak, infered
+ \end{itemize}
+ \pause\item\color{fu-green} erstellen der EBNF
+ \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]{Gruppe: Quellsprache (Beispiel)}
+ \begin{verbatim}
+fun fib[a]
+ if a < 2
+ @1
+ end
+ @(fib[a-1] + fib[a-2])
+end
+
+fun main[]
+ sum = 0
+ i = 1
+ while i <= 10
+ sum = sum + fib[i]
+ i = i + 1
+ end
+ @sum
+end
+ \end{verbatim}
+\end{frame}
+
+\begin{frame}{Gruppe: Schnittstellen}
+ \begin{itemize}
+ \pause\item Lexer $\Rightarrow$ Parser:
+ \pause\begin{itemize}\item\color{fu-green} Tokenstream\end{itemize}
+ \pause\item Parser $\Rightarrow$ Zwischencode:
+ \pause\begin{itemize}\item\color{fu-green} AST\end{itemize}
+ \pause\item Zwischencode $\Rightarrow$ Codegenerator:
+ \pause\begin{itemize}\item\color{orange} 3AC\end{itemize}
+ \pause\item Codegenerator $\Rightarrow$ Assemblercode:
+ \pause\begin{itemize}\item\color{fu-green} vereinfachte MIPS ISA\end{itemize}
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Alex: Lexikalische Analyse}
+ \begin{itemize}
+ \pause\item Tokens:
+ \begin{itemize}
+ \pause\item\color{fu-green} NUMBER, BOOL, IDENT
+ \pause\item\color{fu-green} ASSIGNMENT
+ \pause\item\color{fu-green} OPERATOR
+ \pause\item\color{fu-green} FUN, RETURN
+ \pause\item\color{fu-green} WHILE, IF, ELSE
+ \pause\item\color{fu-green} LBRAK, RBRAK, LPAREN, RPAREN, NEWLINE, COMMA, END
+ \end{itemize}
+ \pause\item\color{fu-green} \"{U}bersetzungsregeln mit Regul\"{a}ren Ausdr\"{u}cken
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Alex: Typsystem}
+ \begin{itemize}
+ \pause\item\color{fu-red} Typinferenz bei Initialisierung von Variablen
+ \pause\item\color{fu-red} Statische Typzuweisung in der Symboltabelle
+ \pause\item\color{fu-red} ggf. automatische Typkonvertierung
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Michael: Syntaxanalyse/Parser}
+ \begin{itemize}
+ \pause\item Top-Down-Parsing
+ \pause\item Ableitungsbaum:
+ \begin{itemize}
+ \pause\item\color{fu-red} Program(Node)
+ \pause\item\color{fu-red} Function(Node)
+ \pause\item\color{fu-red} Statement(Node)
+ \pause\item\color{fu-red} IfStatement(Statement)
+ \pause\item\color{fu-red} WhileStatement(Statement)
+ \pause\item\color{fu-red} ReturnStatement(Statement)
+ \pause\item\color{fu-red} AssignStatement(Statement)
+ \pause\item\color{fu-red} FunctionCall(Statement)
+ \pause\item\color{fu-red} Expression(Node)
+ \pause\item\color{fu-red} UnaryExpression(Expression)
+ \pause\item\color{fu-red} BinaryExpression(Expression)
+ \end{itemize}
+ \end{itemize}
+
+\end{frame}
+
+\begin{frame}{Michael: Semantische Analyse}
+ \begin{itemize}
+ \pause\item\color{fu-red} Aufbau der Symboltabelle
+ \pause\item\color{fu-red} G\"{u}ltigkeitsbereiche der Bezeichner \"{u}berpr\"{u}fen
+ \pause\item\color{fu-red} eindeutige Zuweisungen von Bezeichnern
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Andreas: Zwischencode}
+ \begin{itemize}
+ \pause\item Drei-Adress-Code (SSA Form):
+ \begin{itemize}
+ \pause\item\color{fu-green} Bin\"{a}re Operationen: ADD, SUB, MUL, DIV, MOD, AND, OR
+ \pause\item\color{fu-green} Un\"{a}re Operationen: NOT, MINUS
+ \pause\item\color{fu-green} Zuweisungen: ASSIGN
+ \pause\item\color{orange} Bedingte Spr\"{u}nge: BEQ, BNE, BLT, BGE, BLE, BGT
+ \pause\item\color{orange} Nichtbedingte Spr\"{u}nge: JMP
+ \pause\item\color{orange} Funktionsaufrufe: PARAM, CALL, RETURN
+ \end{itemize}
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Andreas: Maschinenunabh\"{a}ngige Optimierung}
+ \begin{itemize}
+ \pause\item\color{fu-red} Eliminierung gemeinsamer Teilausdr\"{u}cke
+ \pause\item\color{fu-red} Kopiepropagation
+ \pause\item\color{fu-red} Entfernen von totem Code
+ \pause\item\color{fu-red} Konstantenfaltung
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Jana: Codegenerator}
+ \begin{itemize}
+ \pause\item\color{fu-red} Zuweisung von Adressen/Registervergabe
+ \pause\item\color{fu-red} Zerlegen von Drei-Adress-Code in Grundbl\"{o}cke
+ \pause\item\color{fu-red} Erstellen von Flussgraphen
+ \pause\item\color{orange} Befehlsauswahl
+ \pause\item\color{orange} Aufrufkonventionen
+ \pause\item\color{orange} Ausgabe als Assemblercode
+ \end{itemize}
+\end{frame}
+
+\begin{frame}{Jana/Bene: MIPS Emulator}
+ \begin{itemize}
+ \pause\item Vereinfachte MIPS ISA:
+ \begin{itemize}
+ \pause\item\color{fu-green} Arithmetik: ADD, SUB, MUL, DIV, MOD, SHL, SHR
+ \pause\item\color{fu-green} Logik: AND, OR, XOR, NOR
+ \pause\item\color{fu-green} Load \& Store: MOV, LB, LH, LW, SB, SH, SW
+ \pause\item\color{fu-green} Bedingte Spr\"{u}nge: CMP, BEQ, BNE, BLT, BGE, BLE, BGT
+ \pause\item\color{fu-green} Absolute Spr\"{u}nge: J, JAL
+ \pause\item\color{fu-green} Andere: SYS
+ \end{itemize}
+ \pause\item keine Delay-Slots
+ \pause\item keine Memory-Management-Unit
+ \pause\item I/O durch Nachbildung von System-Calls
+ \end{itemize}
+\end{frame}
+
+\end{document}