summaryrefslogtreecommitdiff
path: root/thesis/intro.tex
diff options
context:
space:
mode:
Diffstat (limited to 'thesis/intro.tex')
-rw-r--r--thesis/intro.tex43
1 files changed, 43 insertions, 0 deletions
diff --git a/thesis/intro.tex b/thesis/intro.tex
new file mode 100644
index 0000000..5be42af
--- /dev/null
+++ b/thesis/intro.tex
@@ -0,0 +1,43 @@
+\section{Introduction}
+\label{sec:intro}
+
+\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
+ `achieve a good balance of high performance, small program size, low power consumption, and small silicon area'~\citep[A1.1]{armv7ar}.
+
+Several instruction sets were designed for the ARM architecture.
+First of all, the 32-bit ARM ISA allows the programmer to easily make full use of all the architecture's features.
+The Thumb instruction set provides a 16-bit alternative to the ARM ISA, giving in on performance to achieve improved code density.
+Starting from ARMv6T2, an extension to the Thumb instruction set, known as Thumb-2, adds 32-bit instructions to Thumb to
+ `achieve performance similar to ARM code, with code density better than that of earlier Thumb code'~\citep[A1.2]{armv7ar}.
+This gives the ARM and Thumb instruction sets `almost identical functionality'~\citep[A1.2]{armv7ar},
+ whereas Thumb gives a smaller code size.
+
+\subsection{Clean}
+\label{sec:intro:clean}
+Clean is `a general purpose, state-of-the-art, pure and lazy functional programming language designed for making real-world applications'~\cite{clean}.
+It evolved from LEAN, an intermediate language based on graph rewriting~\citep{lean}.
+As such, one of the steps in the compilation of a Clean program is the translation to bytecode for the ABC-machine, an abstract graph rewriting machine~\citep{execspecs}.
+A code generator is used to generate code equivalent to the ABC-code for concrete machines.
+%todo
+
+\subsection{Terminology}
+\label{sec:intro:terminology}
+In this thesis, I will usually write `Thumb' where the Thumb-2 extension is meant.
+Only when the distinction with pre-ARMv6T2 Thumb is important will I distinguish between (early) Thumb and Thumb-2.
+
+For brevity, a number of common abbreviations is used.
+An overview can be found in \autoref{sec:abbreviations}.
+
+\end{multicols}