% vim: spelllang=nl: \documentclass[a4paper]{article} \usepackage[dutch]{babel} \usepackage[top=3cm]{geometry} \usepackage{latexgit} \usepackage[hidelinks]{hyperref} \usepackage{enumitem} \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} Wat voor invloed heeft het gebruik van Thumb-2 technologie\footnote{ARM Limited. \emph{ARMv7-M Architecture Reference Manual.} (2006--2010)} (afgezet tegen 32-bit ARM instructies) op code generators, specifiek die voor functionele talen? \subsection*{Relevantie} Codegeneratie voor simpele architecturen is interessant om op een hoog abstractieniveau kleine, relatief goedkope systemen 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 technologie. 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. \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 wel/niet op ARM gebruikt worden, maar niet/wel 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. Hier moet gekeken worden naar tijd- en ruimtecomplexiteit (hopelijk niet significant langzamer/groter dan ARM), maar ook naar de grootte van het programma: de gegenereerde code zou voor Thumb-2 significant kleiner moeten zijn. \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}