
diff -r 34b3aeb65fbe -r fddf099a82f8 slides/slides09.tex
--- a/slides/slides09.tex	Tue Nov 28 11:45:48 2023 +0000
+++ b/slides/slides09.tex	Sat Dec 02 21:37:04 2023 +0000
@@ -5,10 +5,23 @@
 \usepackage{../data}
 \usepackage{../graphicss}
 \usepackage{../grammar}
-\usepackage{soul}
-\usepackage{mathpartir}
+%\usepackage{soul}
+%\usepackage{mathpartir}
 \usetikzlibrary{shapes,arrows,shadows}
 
+\usepackage[most]{tcolorbox}
+
+\newtcbox{\hl}[1][]{%
+     size=fbox,
+    tcbox raise base, nobeforeafter, 
+    enhanced, colframe=gray,
+    colback=gray!30, boxrule=1pt,
+    fontupper=\ttfamily,
+    #1}
+
+
+
+
 % beamer stuff
 \renewcommand{\slidecaption}{CFL 09, King's College London}
 \newcommand{\bl}[1]{\textcolor{blue}{#1}}       
@@ -78,33 +91,80 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{frame}[c, fragile]
-\frametitle{Stack Estimation}
-\small
-\mbox{}\\[-15mm]
+%\begin{frame}[c, fragile]
+%\frametitle{Stack Estimation}
+%\small
+%\mbox{}\\[-15mm]%
+%
+%\bl{\begin{center}
+%\begin{tabular}{@{\hspace{-4mm}}l@{\hspace{2mm}}c@{\hspace{2mm}}l@{}}
+%$\textit{estimate}(n)$ & $\dn$ & $1$\\
+%$\textit{estimate}(x)$ & $\dn$ & $1$\\
+%$\textit{estimate}(a_1\;aop\;a_2)$ & $\dn$ &
+%$\textit{estimate}(a_1) + \textit{estimate}(a_2)$\\
+%$\textit{estimate}(\pcode{if}\;b\;\pcode{then}\;e_1\;\pcode{else}\;e_2)$ & $\dn$ & 
+%$\textit{estimate}(b) +$\\ 
+%& & $\quad max(\textit{estimate}(e_1), \textit{estimate}(e_2))$\\
+%$\textit{estimate}(\pcode{write}(e))$ & $\dn$ & 
+%$\textit{estimate}(e) + 1$\\
+%$\textit{estimate}(e_1 ; e_2)$ & $\dn$ & 
+%$max(\textit{estimate}(e_1), \textit{estimate}(e_2))$\\
+%$\textit{estimate}(f(e_1, ..., e_n))$ & $\dn$ & 
+%$\sum_{i = 1..n}\;estimate(e_i)$\medskip\\
+%$\textit{estimate}(a_1\;bop\;a_2)$ & $\dn$ &
+%$\textit{estimate}(a_1) + \textit{estimate}(a_2)$\\
+%\end{tabular}
+%\end{center}}
+
+%\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\begin{frame}[c,fragile]
+\frametitle{\mbox{}\hspace{5cm}Factorial}
 
-\bl{\begin{center}
-\begin{tabular}{@{\hspace{-4mm}}l@{\hspace{2mm}}c@{\hspace{2mm}}l@{}}
-$\textit{estimate}(n)$ & $\dn$ & $1$\\
-$\textit{estimate}(x)$ & $\dn$ & $1$\\
-$\textit{estimate}(a_1\;aop\;a_2)$ & $\dn$ &
-$\textit{estimate}(a_1) + \textit{estimate}(a_2)$\\
-$\textit{estimate}(\pcode{if}\;b\;\pcode{then}\;e_1\;\pcode{else}\;e_2)$ & $\dn$ & 
-$\textit{estimate}(b) +$\\ 
-& & $\quad max(\textit{estimate}(e_1), \textit{estimate}(e_2))$\\
-$\textit{estimate}(\pcode{write}(e))$ & $\dn$ & 
-$\textit{estimate}(e) + 1$\\
-$\textit{estimate}(e_1 ; e_2)$ & $\dn$ & 
-$max(\textit{estimate}(e_1), \textit{estimate}(e_2))$\\
-$\textit{estimate}(f(e_1, ..., e_n))$ & $\dn$ & 
-$\sum_{i = 1..n}\;estimate(e_i)$\medskip\\
-$\textit{estimate}(a_1\;bop\;a_2)$ & $\dn$ &
-$\textit{estimate}(a_1) + \textit{estimate}(a_2)$\\
-\end{tabular}
-\end{center}}
+\begin{textblock}{7}(0,1.6)\footnotesize
+\begin{minipage}{6cm}
+\begin{lstlisting}[language=JVMIS,basicstyle=\ttfamily, numbers=none]
+.method public static fact(I)I
+.limit locals 1
+.limit stack 6
+   iload 0
+   ldc 0
+   if_icmpne If_else_0
+   ldc 1
+   goto If_end_1
+If_else_0:
+   iload 0
+   iload 0
+   ldc 1
+   isub
+   invokestatic fact/fact/fact(I)I
+   imul
+If_end_1:
+   ireturn
+.end method
+\end{lstlisting}
+\end{minipage}
+\end{textblock}
+
+\begin{textblock}{7}(6,7)
+\begin{bubble}[7cm]\small
+\begin{lstlisting}[language=Lisp,
+                   basicstyle=\ttfamily, 
+                   numbers=none,
+                   xleftmargin=1mm,linebackgroundcolor=\color{cream}]
+def fact(n) = 
+  if n == 0 then 1 
+  else n * fact(n - 1)
+\end{lstlisting}
+\end{bubble}
+\end{textblock}
 
 \end{frame}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
 
 
 
@@ -148,7 +208,7 @@
                    xleftmargin=1mm,linebackgroundcolor=\color{cream}]
 def facT(n, acc) = 
   if n == 0 then acc 
-  else facT(n - 1, n * acc);
+  else facT(n - 1, n * acc)
 \end{lstlisting}
 \end{bubble}
 \end{textblock}
@@ -159,7 +219,7 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}[fragile]
 
-\begin{textblock}{7}(1,-0.2)\footnotesize
+\begin{textblock}{7}(1,-0.38)\footnotesize
 \begin{minipage}{6cm}
 \begin{lstlisting}[language=JVMIS,basicstyle=\ttfamily, numbers=none, escapeinside={(*@}{@*)}]
 .method public static facT(II)I 
@@ -263,6 +323,40 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}[c]
+\frametitle{???}
+
+\small
+\begin{tabular}{cc}
+  \includegraphics[scale=0.2]{basic-code.jpg} &
+  \includegraphics[scale=0.2]{machine-code.jpg}                                
+\end{tabular}
+
+
+\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}[t]
+\frametitle{Opcodes}
+
+\small
+\begin{tabular}{cc}
+  \includegraphics[scale=0.3]{machine-code-large.png}      
+\end{tabular}
+
+
+\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{frame}<1-2>[t]
+
+\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}[c,fragile]
 \frametitle{Peephole Optimisations}
 




