Add slides about fixpoint
This commit is contained in:
parent
baca8da49a
commit
fc080b8d15
1 changed files with 86 additions and 1 deletions
87
slides.tex
87
slides.tex
|
@ -17,7 +17,7 @@
|
|||
\usepackage{multirow}
|
||||
\usepackage[many]{tcolorbox}
|
||||
\usepackage[absolute,overlay]{textpos}
|
||||
\usetikzlibrary{arrows.meta}
|
||||
\usetikzlibrary{arrows.meta,shapes}
|
||||
|
||||
\usepackage{texlib/my_listings}
|
||||
\usepackage{texlib/specific}
|
||||
|
@ -646,4 +646,89 @@ Segmentation fault.
|
|||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section*{Extra slides}
|
||||
|
||||
\begin{frame}[noframenumbering]
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[noframenumbering]{Fixpoint upon control flow merge}
|
||||
\begin{columns}
|
||||
\begin{column}{0.3\textwidth}
|
||||
\begin{tikzpicture}
|
||||
\begin{scope}[every node/.style={rectangle,thick,draw,scale=0.95}]
|
||||
\node (if) at (0, 5) {\lstbash{if cnd}};
|
||||
\node (then) at (-1, 3) { \lstbash{then A} };
|
||||
\node (else) at (1, 3) { \lstbash{else B} };
|
||||
\node (after) at (0, 1) { \lstbash{C} };
|
||||
\end{scope}
|
||||
\node [circle, thick, draw, minimum size=3em, color=red] (circafter) at (0, 1) {};
|
||||
\begin{scope}[>={Stealth[black]}, every path/.style={draw=black,very thick}]
|
||||
\path [->] (if) -- (then);
|
||||
\path [->] (if) -- (else);
|
||||
\path [->] (then) -- (after);
|
||||
\path [->] (else) -- (after);
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
\end{column}
|
||||
\begin{column}{0.6\textwidth}
|
||||
\begin{center}
|
||||
If eg.
|
||||
\[
|
||||
CFA(A) = c-48 \qquad CFA(B) = c-52
|
||||
\]
|
||||
no possible unwinding data for C, \alert{even for the
|
||||
compiler}!
|
||||
|
||||
\vspace{1em}
|
||||
Also, \alert{no possible clean function postlude}!
|
||||
|
||||
\vspace{2em}
|
||||
$\implies$ $CFA(A) = CFA(B)$ and merge is immediate
|
||||
\end{center}
|
||||
\end{column}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[noframenumbering]{Fixpoint upon loop control flow merge}
|
||||
\begin{columns}
|
||||
\begin{column}{0.3\textwidth}
|
||||
\begin{tikzpicture}
|
||||
\begin{scope}[every node/.style={rectangle,thick,draw,scale=0.95}]
|
||||
\node (inbound) at (0, 7) {\lstbash{A}};
|
||||
\node (while) at (0, 5) {\lstbash{for i in ...}};
|
||||
\node (do) at (0, 3) { \lstbash{do a = array[i]; B} };
|
||||
\node (done) at (0, 1) { \lstbash{C} };
|
||||
\end{scope}
|
||||
\node [ellipse, thick, draw, minimum width=10em, minimum height=3em, color=red] (circafter) at (0, 3) {};
|
||||
\begin{scope}[>={Stealth[black]}, every path/.style={draw=black,very thick}]
|
||||
\path [->] (inbound) -- (while);
|
||||
\path [->] (while) edge[bend right] (do);
|
||||
\path [->] (do) -- (done);
|
||||
\path [->] (do) edge[bend right] (while);
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
\end{column}
|
||||
\begin{column}{0.6\textwidth}
|
||||
\begin{center}
|
||||
{\large\alert{Variable stack frame size!}}
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
We cannot hope for an invariant\dots\\
|
||||
but the compiler cannot
|
||||
either.
|
||||
|
||||
\vspace{1em}
|
||||
|
||||
{
|
||||
\large\alert{$\implies$} the compiler will \alert{fallback to
|
||||
\reg{rbp}}\\
|
||||
}
|
||||
even with \lstbash{--fomit-frame-pointer}
|
||||
\end{center}
|
||||
\end{column}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
\end{document}
|
||||
|
|
Loading…
Reference in a new issue