view slide.tex @ 6:bfb290984b07

create slide.tex
author kent
date Mon, 21 Apr 2008 21:24:07 +0900
parents
children f8cf4a3ac7a8
line wrap: on
line source

%        File: slide.tex
%     Created: 月  4 21 08:00 PM 2008 J
% Last Change: 月  4 21 08:00 PM 2008 J
%
\documentclass[mathserif]{beamer}
\usepackage{graphicx}
\usepackage{beamerthemesplit}
%manual% open /usr/local/ptetex/share/texmf-dist/doc/latex/beamer/beameruserguide.pdf

\title{Continuation based CコンパイラのGCC-4.2による実装}
\author{与儀 健人}
\date{\today}

\begin{document}

\begin{frame}
  \frametitle{Continuation based Cについて}
  \begin{itemize}
    \item 
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{CbCコード例}
  \begin{columns}
    \column{.4\textwidth}
    \begin{verbatim}
__code while_process(int total, int count){
    total += count;
    count++;
    goto while_cond(total, count);
}
__code while_cond(int total, int count){
    if ( count <= 100 ){
        goto while_process(total, count);
    }else{
        goto while_end(total);
    }
}
__code while_end(int total){
    goto cs_exit(0);
}
    \end{verbatim}
    \column{.3\textwidth}
    \includegraphics[width=.9\textwidth]{figures/CbC-loop.eps}
  \end{columns}
\end{frame}

\begin{frame}[fragile]
  \frametitle{実装に必要な構文}
  \begin{itemize}
    \item コードセグメント宣言 \verb|\_\_ code cs(int a, char *b)|
    \item 継続 \verb|goto cs(10, "abc");|
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{GNU Compiler Collection}
  \begin{columns}
    \column{.5\textwidth}
    \includegraphics[width=\textwidth]{figures/GCC-pass-slide.eps}
    \column{.3\textwidth}
    \begin{itemize}
      \item aiueo
      \item aiueo
    \end{itemize}
  \end{columns}
\end{frame}


\begin{frame}
  \frametitle{Tail call elimination}
\end{frame}

\begin{frame}
  \frametitle{実装}
  \begin{description}
    \item \_\_code トークンの追加
    \item code segmentのパース
    \item gotoのパース
    \item \alert<2>{tree/RTL変換 (expand\_call)}
    \item その他(エラー検出など) 
  \end{description}
\end{frame}

\begin{frame}
  \frametitle{expand\_call}
  \begin{itemize}
    \item 関数呼び出しのtreeからRTLへ変換する
    \item Tail callが可能ならその最適化を行う
    \item この関数のみで1200行もある
    \item そのほとんどがTail call可否の判定
    \item そして読みづらい
  \end{itemize}
\end{frame}

\begin{frame}
  \frametitle{expand\_cbc\_goto}
  \begin{itemize}
    \item code segmentへのgotoを表したtreeを受け取る
    \item 確実にTail callでcode segmentにgoto
    \item 無駄なTail call可否判定を削除
  \end{itemize}
\end{frame}


\begin{frame}[fragile]
  \frametitle{評価(ベンチマーク)}
  \begin{itemize}
    \item 環境 i386 fedora core
    \item 使用したプログラム conv1
  \end{itemize}<++>
  \centering
  \begin{tabular}{|l|r|r|r|r|} \hline
    & ./conv1 0 & ./conv1 1 & ./conv1 2 &  ./conv1 3 \\ \hline
    Micro-C         & 5.25 & 8.97 & 2.19 & 2.73 \\ \hline \hline
    GCC             & 3.69 & 4.87 & 3.08 & 3.65 \\ \hline
    GCC (+omit)     & 2.74 & 4.20 & 2.25 & 2.76 \\ \hline
    GCC (+fastcall) & 2.70 & 3.44 & 1.76 & 2.34 \\ \hline \hline
    TCC             & 4.15 &122.28& 84.91&102.59\\ \hline
  \end{tabular}
  \begin{description}
    \item[+omit] -fomit-frame-pointerオプションを付加
    \item[+fastcall] \verb|__attribute__ ((fastcall))|を付加
  \end{description}
\end{frame}

\begin{frame}
  \frametitle{まとめ}
\end{frame}

\begin{frame}
  \frametitle{}
\end{frame}

\begin{frame}
  \frametitle{}
\end{frame}

\begin{frame}
  \frametitle{}
\end{frame}

\begin{frame}
  \frametitle{}
\end{frame}

\end{document}