2
0
Fork 0
mirror of https://github.com/MartinThoma/LaTeX-examples.git synced 2025-04-25 06:18:05 +02:00
LaTeX-examples/documents/Programmierparadigmen/Java-Bytecode.tex

82 lines
No EOL
3.8 KiB
TeX

%!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|)}