diff options
author | Camil Staps | 2016-09-06 12:27:16 +0200 |
---|---|---|
committer | Camil Staps | 2016-09-06 12:27:16 +0200 |
commit | 5cd30ddecd0b5ccacb136fa4906c302d853a812e (patch) | |
tree | 59a9a6623acb6ac642077e4995d7de3905b264dd /plan/plan.tex | |
parent | Start onderzoeksplan (diff) |
Onderzoeksplan
Diffstat (limited to 'plan/plan.tex')
-rw-r--r-- | plan/plan.tex | 63 |
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} |