12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- %!TEX root = Programmierparadigmen.tex
- \chapter{Java Bytecode}
- \index{Java Bytecode|(}
- \begin{definition}[Bytecode]\xindex{Bytecode}%
- Der Bytecode ist eine Sammlung von Befehlen für eine virtuelle Maschine.
- \end{definition}
- Bytecode ist unabhängig von realer Hardware.
- \begin{definition}[Heap]\xindex{Heap}\xindex{Speicher!dynamischer}%
- Der dynamische Speicher, auch Heap genannt, ist ein Speicherbereich, aus dem
- zur Laufzeit eines Programms zusammenhängende Speicherabschnitte angefordert
- und in beliebiger Reihenfolge wieder freigegeben werden können.
- \end{definition}
- \textit{Activation Record} ist ein \textit{Stackframe}.\index{Activation Record|see{Stackframe}}
- \section{Instruktionen}
- \begin{table}[h]
- \begin{tabular}{p{6cm}|ll}
- \textbf{Beschreibung} & \textbf{int} & \textbf{float} \\ \hline
- Addition & iadd & fadd \\
- Element aus Array auf Stack packen & iaload & faload \\
- Element aus Stack in Array speichern & iastore & fastore \\
- Konstante auf Stack legen & iconst\_<i> & fconst\_<f> \\
- Divide second-from top by top & idiv & fdiv \\
- Multipliziere die obersten beiden Zahlen des Stacks & imul & fmul \\
- \end{tabular}
- \end{table}
- \section{Polnische Notation}
- \begin{definition}[Schreibweise von Rechenoperationen]
- Sei $f: A \times B \rightarrow C$ eine Funktion, $a \in A$ und $b \in B$.
- \begin{defenum}
- \item Die Schreibweise $a\ f\ b$ heißt \textbf{Infix-Notation}\xindex{Infix-Notation}.
- \item Die Schreibweise $f\ a\ b$ heißt \textbf{Präfixnotation}\xindex{Präfixnotation}
- \item Die Schreibweise $a\ b\ f$ heißt \textbf{Postfixnotation}\xindex{Postfixnotation}.
- \end{defenum}
- \end{definition}
- \textit{Polnische Notation}\index{Notation!polnische|see{Präfixnotation}} ist ein Synonym für die Präfixnotation.
- \textit{Umgekehrte polnische Notation}\index{Notation!umgekehrte polnische|see{Postfixnotation}} ist ein Synonym für die Postfixnotation.
- \begin{beispiel}[Schreibweise von Rechenoperationen]
- \begin{bspenum}
- \item $1 + 2$ nutzt die Infix-Notation.
- \item $f\ a\ b$ nutzt die polnische Notation.
- \item Wir der Ausdruck $1 + 2 \cdot 3$ in Infix-Notation ohne Operatoren-Präzedenz
- ausgewertet, so gilt:
- \[1 + 2 \cdot 3 = 9\]
- Wird er mit Operatoren-Präzendenz ausgewertet, so gilt:
- \[1 + 2 \cdot 3 = 7\]
- \item Der Ausdruck
- \[1 + 2 \cdot 3 = 7\]
- entspricht
- \[+\ 1\ \cdot\ 2\ 3\]
- in der polnischen Notation und
- \[1\ 2\ 3\ \cdot\ +\]
- in der umgekehrten polnischen Notation.
- \end{bspenum}
- \end{beispiel}
- \begin{bemerkung}[Eigenschaften der Prä- und Postfixnotation]
- \begin{bemenum}
- \item Die Reihenfolge der Operanden kann beibehalten und gleichzeitig
- auf Klammern verzichtet werden, ohne dass sich das Ergebnis
- verändert.
- \item Die Infix-Notation kann in einer Worst-Case Laufzeit von $\mathcal{O}(n)$,
- wobei $n$ die Anzahl der Tokens ist mittels des
- \textit{Shunting-yard-Algorithmus}\xindex{Shunting-yard-Algorithmus} in
- die umgekehrte Polnische Notation überführt werden.
- \end{bemenum}
- \end{bemerkung}
- \section{Weitere Informationen}
- \begin{itemize}
- \item \url{http://cs.au.dk/~mis/dOvs/jvmspec/ref-Java.html}
- \item \href{http://scanftree.com/Data_Structure/prefix-postfix-infix-online-converter}{scanftree.com}:
- Infix $\leftrightarrow$ Postfix Konverter
- \end{itemize}
- \index{Java Bytecode|)}
|