summaryrefslogtreecommitdiff
path: root/plan
diff options
context:
space:
mode:
authorCamil Staps2016-09-06 12:27:16 +0200
committerCamil Staps2016-09-06 12:27:16 +0200
commit5cd30ddecd0b5ccacb136fa4906c302d853a812e (patch)
tree59a9a6623acb6ac642077e4995d7de3905b264dd /plan
parentStart onderzoeksplan (diff)
Onderzoeksplan
Diffstat (limited to 'plan')
-rw-r--r--plan/plan.tex63
1 files changed, 59 insertions, 4 deletions
diff --git a/plan/plan.tex b/plan/plan.tex
index 665500e..76afd6b 100644
--- a/plan/plan.tex
+++ b/plan/plan.tex
@@ -1,16 +1,71 @@
+% vim: spelllang=nl:
\documentclass[a4paper]{article}
\usepackage[dutch]{babel}
-\usepackage{geometry}
+\usepackage[top=3cm]{geometry}
\usepackage{latexgit}
+\usepackage[hidelinks]{hyperref}
+\usepackage{enumitem}
-\title{Onderzoeksplan bachelorscriptie}
-\author{Camil Staps}
-\date{\gitcommitdate}
+\title{Codegeneratie voor Thumb-2 processoren\\\large{Onderzoeksplan bachelorscriptie}}
+\author{
+ Camil Staps\\[.4em]
+ Begeleiders: prof.dr.dr.h.c.ir. M.J. Plasmeijer en drs. J.H.G. van Groningen
+}
+\date{\gitcommitdate[formatDate]}
\begin{document}
\maketitle
+\thispagestyle{empty}
+
+\subsection*{Onderzoeksvraag}
+Welke verschillen bestaan er tussen de ARM en Thumb-2
+architecturen\footnote{ARM Limited. \emph{ARMv7-M Architecture Reference
+Manual.} (2006--2010)} en wat voor invloed hebben deze verschillen op code
+generators?
+
+\subsection*{Relevantie}
+Codegeneratie voor simpele architecturen is interessant, om op een hoog
+abstractieniveau kleine, relatief goedkope systemen te kunnen programmeren. In
+het bijzonder wil ik kijken naar vertaling van ABC-\footnote{Pieter Koopman.
+\emph{Functional Programs as Executable Specifications}. (Meppel: Krips Repro,
+1990)} naar Thumb-2 machinecode, met als doel steeds simpelere systemen met een
+functionele taal te kunnen programmeren.
+
+De Cortex-M3 processor die in bijvoorbeeld de Arduino
+Due\footnote{\url{https://www.arduino.cc/en/Main/ArduinoBoardDue}} zit gebruikt
+de Thumb-2 instructieset. Er zijn enkele Haskell-georienteerde projecten voor
+Arduino\footnote{\url{https://wiki.haskell.org/Arduino}}, maar die gebruiken
+een EDSL die naar C gecompileerd of door C ge\"{\i}nterpreteerd wordt, waardoor
+de functionele kracht van Haskell verloren gaat.
+
+\subsection*{Verwachte resultaten}
+De verwachting is uiteindelijk een lijst met verschillen tussen ARM en Thumb-2
+op te kunnen stellen. Per verschil zou aangegeven moeten worden:
+
+\begin{description}
+ \item[Impact]
+ Wat voor techniek kan \emph{wel} op ARM gebruikt worden, maar niet op
+ Thumb-2?
+
+ \item[Oplossing]
+ Hoe kan een bestaande ARM code generator aangepast worden om werkende
+ Thumb-2 code te genereren, gezien dit verschil? Hierbij zal ik voorbeelden
+ uit de Clean code
+ generator\footnote{\url{https://svn.cs.ru.nl/repos/clean-code-generator/trunk},
+ i.h.b. \texttt{cgarm*}.} gebruiken.
+
+ \item[Vergelijking van complexiteit]
+ Wat is ongeveer het effect van de aanpassingen op de complexiteit van een
+ Clean-programma? Het gaat hier in eerste instantie niet om een volledige
+ berekening of compleet bewijs, maar een algemeen idee.
+\end{description}
+
+\subsection*{Strategie}
+Ik zal een \emph{hands-on}-strategie gebruiken: telkens een klein deel van de
+huidige Clean code generator voor ARM bekijken, controleren wat niet zal werken
+op Thumb-2, en hier een oplossing voor bedenken.
\end{document}