blob: 073369199ea2f09afd5259da051b03e67e41307a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
% 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}
|