\usepackage{multimedia}
\usepackage{subfigure}
\usepackage{booktabs}
+% Can use a tiny fontsize
+\usepackage{fancyvrb}
+
%For handouts, use the following two lines:
%\usepackage{pgfpages}
%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
\subsection{MontiumC}
\subsection{LLVM}
\subsection{Compile process}
+
\section{Tasks}
+
\subsection{Original tasks}
\begin{frame}{Original tasks}
\begin{itemize}
\item Provide debugging information
\end{itemize}
\end{frame}
+
\subsection{Extra tasks}
\begin{frame}{Extra tasks}
\begin{itemize}
\item What is Montium IR?
\end{itemize}
\end{frame}
+
\begin{frame}{What is MontiumC?}
\begin{itemize}
\item Status: Specification is ongoing
\note[item]{Complex C --- A lot of corner cases}
\item C is limited
\note[item]{Limited C --- Need to use annotations, limited amount of types}
+ \item Assembly vs. High level
+ \note[item]{Tradeoffs -- Code size vs compiler complexity, clarity
+ vs control, clarity vs determinism}
\end{itemize}
\end{itemize}
\end{frame}
-
+
+ \begin{frame}[containsverbatim]
+ \begin{columns}
+ \begin{column}{0.5\textwidth}
+ Low level
+ \begin{Verbatim}[fontsize=\tiny]
+mem input;
+mem output;
+word factor;
+
+void run(void) {
+ factor = from_int(2);
+ input = alloc_mem(P0M0);
+ output = alloc_mem(P0M1);
+ set_base(input, 0);
+ set_offset(input, 0);
+ set_base(output, -1);
+ set_offset(output, -1);
+
+ next_cycle();
+ word in = read_mem(input);
+ word out = p0o0(imul(ra1(in), rc1(factor)))
+ add_offset(input, 1);
+ add_offset(output, 1);
+ init_loop(LC1, 8);
+ do {
+ write_mem(output, out);
+ in = read_mem(input);
+ out = p0m0(imul(ra1(in), rc1(factor)))
+ add_offset(input, 1);
+ add_offset(output, 1);
+ } while(loop_next(LC1));
+
+ write_mem(output, out);
+\end{Verbatim}
+ \end{column}
+ \begin{column}{0.5\textwidth}
+ High level
+ \begin{Verbatim}[fontsize=\tiny]
+P0M0 int input[10];
+P0M1 int output[10];
+
+void run(void) {
+ for (int i=0; i<10; ++i)
+ output[i] = input[i] * 2;
+}
+ \end{Verbatim}
+ \end{column}
+ \end{columns}
+ \end{frame}
+
\begin{frame}{What is Montium IR?}
\begin{itemize}
\item Status: Initial version
\end{itemize}
\end{frame}
+ \begin{frame}{Debugging information}
+ \begin{itemize}
+ \item Status: Not started
+ \item Challenges:
+ \begin{itemize}
+ \item Not much LLVM support yet
+ \note[item]{LLVM support --- New in clang/backend, no support in
+ transformations yet.}
+ \item Transformations
+ \note[item]{Transformations --- Global arguments, argument addition,
+ removal, etc.}
+ \end{itemize}
+ \end{itemize}
+ \end{frame}
+
\begin{frame}{Reconfigurable binaries}
\begin{itemize}
\item Status: Recently started
\item Challenges:
\begin{itemize}
- \item What to reconfigure?
+ \item Tracking variables
+ \note[item]{Tracking --- Through all steps of the process}
\item Loss of optimizations
+ \note[item]{Optimizations --- Hard to encode constraints}
+ \item Mostly a backend problem
\end{itemize}
\end{itemize}
\end{frame}
+
+\section{Work process}
+ \begin{frame}{Recore}
+ \begin{itemize}
+ \item Fast communication
+ \note[item]{Communication --- Mixed teams, easy to "listen in".}
+ \item Constructive brainstorming
+ \note[item]{Brainstorming --- Evaluating different ideas and approaches.}
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{LLVM}
+ \begin{itemize}
+ \item Large community
+ \note[item]{Community --- Companies involved, a lot of full time
+ developers.}
+ \item Great support
+ \note[item]{Support --- mailing list, bug reports solved within 1/2 days.}
+ \item Slightly conflicting goals
+ \note[item]{Goals --- LLVM aims mainly at "regular" architectures.}
+ \end{itemize}
+ \end{frame}
+
+\section{Conclusions}
+
\end{document}