diff options
Diffstat (limited to 'thesis/intro.tex')
-rw-r--r-- | thesis/intro.tex | 30 |
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}. |