Mercurial > hg > Papers > 2008 > kent-sigos
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}