summaryrefslogtreecommitdiff
path: root/thesis/intro.tex
diff options
context:
space:
mode:
Diffstat (limited to 'thesis/intro.tex')
-rw-r--r--thesis/intro.tex30
1 files changed, 11 insertions, 19 deletions
diff --git a/thesis/intro.tex b/thesis/intro.tex
index 8640811..71a667e 100644
--- a/thesis/intro.tex
+++ b/thesis/intro.tex
@@ -3,14 +3,6 @@
\begin{multicols}{2}
-\subsection{Introduction}
-\label{sec:intro:intro}
-The Thumb-2 instruction set combines the best features of the ARM and Thumb instruction sets (speed and small code size, respectively).
-We discuss the differences between the ARM and Thumb-2 instruction sets,
- and their influences on code generation.
-Specifically, we look at code generation for the purely functional programming language Clean.
-%todo results
-
\subsection{ARM, Thumb and Thumb-2}
\label{sec:intro:arm-thumb-thumb2}
ARM is a RISC architecture with several enhancements to a basic RISC architecture allowing ARM processors to
@@ -56,17 +48,7 @@ ARM instructions have 4-bit register fields to address them.
Some 16-bit Thumb instructions have 3-bit register fields that can only address the lowest eight registers.
For these instructions there exist 32-bit variants that can address all sixteen registers.
-\subsubsection{Interworking}
-\label{sec:intro:interworking}
-The ARM and Thumb instruction sets are designed to \emph{interwork}:
- different parts of a program can be assembled for different instruction sets
- and it is possible to switch instruction set when the program counter is written to~\parencite[A4.1]{armv7ar}.
-
-The Thumb-2 code generator proposed in this thesis does not produce ARM code,
- though the existence of the interworking facility has effects on the techniques that can be used in it.
-This will be covered in \cref{sec:two-bits}.
-
-\begin{figure*}
+\begin{figure*}[t]
\centering
\begin{subfigure}[b]{.2\linewidth}
\centering
@@ -116,6 +98,16 @@ This will be covered in \cref{sec:two-bits}.
\caption{Rewriting a Clean node\label{fig:intro:rewriting}}
\end{figure*}
+\subsubsection{Interworking}
+\label{sec:intro:interworking}
+The ARM and Thumb instruction sets are designed to \emph{interwork}:
+ different parts of a program can be assembled for different instruction sets
+ and it is possible to switch instruction set when the program counter is written to~\parencite[A4.1]{armv7ar}.
+
+The Thumb-2 code generator proposed in this thesis does not produce ARM code,
+ though the existence of the interworking facility has effects on the techniques that can be used in it.
+This will be covered in \cref{sec:two-bits}.
+
\subsection{Clean}
\label{sec:intro:clean}
Clean is \enquote{a general purpose, state-of-the-art, pure and lazy functional programming language designed for making real-world applications}~\parencite{clean}.