Repository navigation
Expand file tree
/
Copy pathproposal.tex
More file actions
65 lines (50 loc) · 2.47 KB
/
Copy pathproposal.tex
File metadata and controls
65 lines (50 loc) · 2.47 KB
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
\documentclass[12pt]{article}
\usepackage{acronym}
\usepackage{titling}
\usepackage[small,compact]{titlesec}
\usepackage{enumitem}
\usepackage[margin=1.25in]{geometry}
\pagenumbering{gobble}
\setlist{nolistsep}
\title{MiniJava LLVM Proposal}
\author{Mitch Souders and Mark Smith}
\date{May 2, 2014}
\begin{document}
\makeatletter
\def\maketitle{\par{\centerline{\huge\bfseries\@title}}\par\@author -- \@date}
\makeatother
\maketitle
\section*{Project Topic}
The primary goal of this project is to gain familiarity with \texttt{LLVM}. The proposal is to create an implementation for compiling MiniJava to the \texttt{LLVM} runtime IR. The basis for the starting framework will be the MiniJava application used in CS321/322. The compiler starter framework was provided by Professor Mark Jones. The MiniJava project currently includes options for running as an interpreter or compiling to x86 code.
Proposed project flow:
\begin{enumerate}
\item Convert base MiniJava to \texttt{LLVM} IR.
MiniJava already requires (among other things):
\begin{itemize}
\item Classes, Variables, Statements, Loops, Branches, etc.
\item Arrays
\item Object Methods/Fields
\item Static Methods/Fields
\item Dynamic Dispatch (polymorphic methods)
\end{itemize}
\item Extend MiniJava to a larger subset of Java
\begin{itemize}
\item Interfaces
% I feel like there should be more here
% but MiniJava already seems to have a lot
% of base requirements.
\end{itemize}
\item \texttt{LLVM} Garbage Collection
\end{enumerate}
\section*{Deliverables}
The project deliverables will be a summary of the work, highlights of knowledge gained from implementation, the completed compiler as Java source code and unit tests indicating correct operations for language construct snippets.
\section*{Materials}
The following tools will be used to implement this project. Note: Some of these tools have alternates that could be used if the specified tool prove unsuitable (e.g. using \texttt{llvm-j} instead of \texttt{jllvm}).
\begin{description}
\item[MiniJava Compiler]
The MiniJava Compiler (\texttt{MJC}) from CS321/322 will be considered the base version of the language MiniJava with further extensions added as required.
\item[LLVM]\footnote{http://llvm.org/} The target compiler for the generated IR for MiniJava.
\item[jllvm]\footnote{https://code.google.com/p/jllvm}
Java bindings to \texttt{LLVM}, which allow direct interaction with \texttt{LLVM}.
\end{description}
\end{document}