changeset 6:bfb290984b07

create slide.tex
author kent
date Mon, 21 Apr 2008 21:24:07 +0900
parents 7fdca589238f
children f8cf4a3ac7a8
files Makefile main.pdf slide.tex
diffstat 3 files changed, 153 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Tue Mar 25 23:16:29 2008 +0900
+++ b/Makefile	Mon Apr 21 21:24:07 2008 +0900
@@ -8,7 +8,7 @@
 TARGET1 = main
 #TARGET2 = resume
 #TARGET3 = resume2
-#SLIDE1 = slide
+SLIDE1 = slide
 
 PDFs = $(TARGET1).pdf
 DVIs = $(TARGET1).dvi
Binary file main.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/slide.tex	Mon Apr 21 21:24:07 2008 +0900
@@ -0,0 +1,152 @@
+%        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}
+
+
+
+