slides/slides09.tex
changeset 901 33cff35bdc1a
parent 871 94b84d880c2b
child 940 46eee459a999
--- a/slides/slides09.tex	Thu Dec 01 13:07:32 2022 +0000
+++ b/slides/slides09.tex	Fri Dec 02 16:26:20 2022 +0000
@@ -22,16 +22,17 @@
   \begin{tabular}{@ {}c@ {}}
   \\[-3mm]
   \LARGE Compilers and \\[-2mm] 
-  \LARGE Formal Languages\\[3mm] 
+  \LARGE Formal Languages\\[-3mm] 
   \end{tabular}}
 
   \normalsize
   \begin{center}
   \begin{tabular}{ll}
-    Email:  & christian.urban at kcl.ac.uk\\
-    %Office Hours: & Thursdays 12 -- 14\\
-    %Location: & N7.07 (North Wing, Bush House)\\
-    Slides \& Progs: & KEATS (also homework is there)\\  
+  Email:  & christian.urban at kcl.ac.uk\\
+  Office Hour: & Fridays 11 -- 12\\
+  Location: & N7.07 (North Wing, Bush House)\\
+  Slides \& Progs: & KEATS\\
+  Pollev: & \texttt{\alert{https://pollev.com/cfltutoratki576}}\\  
   \end{tabular}
   \end{center}
 
@@ -75,7 +76,41 @@
 
 \end{frame}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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}
 
@@ -229,52 +264,69 @@
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}[c,fragile]
-\frametitle{Factorial Funct.~on the JVM}
+\frametitle{Peephole Optimisations}
 
-\begin{textblock}{7}(1,1.8)\footnotesize
-\begin{minipage}{6cm}
-\begin{lstlisting}[language=JVMIS,basicstyle=\ttfamily, numbers=none]
-.method public static facT(II)I 
-.limit locals 2
-.limit stack 6
-  iload 0
-  ldc 0
-  if_icmpne If_else_2
-  iload 1
-  goto If_end_3
-If_else_2:
-  iload 0
-  ldc 1
-  isub
-  iload 0
-  iload 1
-  imul
-  invokestatic fact/fact/facT(II)I
-If_end_3:
-  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, acc) = 
-  if n == 0 then acc 
-  else facT(n - 1, n * acc);
-\end{lstlisting}
-\end{bubble}
-\end{textblock}
+\begin{center}
+\begin{tabular}{ll}
+  \texttt{ldc}:  & \texttt{iconst\_0} \ldots \texttt{iconst\_5}\\
+                 & \texttt{bipush} $n$ where $-128 < n <= 128$\bigskip\\  
+  \texttt{iload}: &  \texttt{iload\_0} \ldots \texttt{iload\_3}\bigskip\\
+  \texttt{istore}: &  \texttt{istore\_0} \ldots \texttt{istore\_3}\\
+\end{tabular}
+\end{center}  
 
 \end{frame}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\begin{frame}[c,fragile]
+%\frametitle{Factorial Funct.~on the JVM}
+%
+%\begin{textblock}{7}(1,1.8)\footnotesize
+%\begin{minipage}{6cm}
+%\begin{lstlisting}[language=JVMIS,basicstyle=\ttfamily, numbers=none]
+%.method public static facT(II)I 
+%.limit locals 2
+%.limit stack 6
+%  iload 0
+%  ldc 0
+%  if_icmpne If_else_2
+%  iload 1
+%  goto If_end_3
+%If_else_2:
+%  iload 0
+%  ldc 1
+%  isub
+%  iload 0
+%  iload 1
+%  imul
+%  invokestatic fact/fact/facT(II)I
+%If_end_3:
+%  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, acc) = 
+%  if n == 0 then acc 
+%  else facT(n - 1, n * acc);
+%\end{lstlisting}
+%\end{bubble}
+%\end{textblock}
+%
+%\end{frame}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{frame}[fragile,c]
 \frametitle{LLVM}