annotate slide.tex @ 6:bfb290984b07

create slide.tex
author kent
date Mon, 21 Apr 2008 21:24:07 +0900
parents
children f8cf4a3ac7a8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
bfb290984b07 create slide.tex
kent
parents:
diff changeset
1 % File: slide.tex
bfb290984b07 create slide.tex
kent
parents:
diff changeset
2 % Created: 月 4 21 08:00 PM 2008 J
bfb290984b07 create slide.tex
kent
parents:
diff changeset
3 % Last Change: 月 4 21 08:00 PM 2008 J
bfb290984b07 create slide.tex
kent
parents:
diff changeset
4 %
bfb290984b07 create slide.tex
kent
parents:
diff changeset
5 \documentclass[mathserif]{beamer}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
6 \usepackage{graphicx}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
7 \usepackage{beamerthemesplit}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
8 %manual% open /usr/local/ptetex/share/texmf-dist/doc/latex/beamer/beameruserguide.pdf
bfb290984b07 create slide.tex
kent
parents:
diff changeset
9
bfb290984b07 create slide.tex
kent
parents:
diff changeset
10 \title{Continuation based CコンパイラのGCC-4.2による実装}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
11 \author{与儀 健人}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
12 \date{\today}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
13
bfb290984b07 create slide.tex
kent
parents:
diff changeset
14 \begin{document}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
15
bfb290984b07 create slide.tex
kent
parents:
diff changeset
16 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
17 \frametitle{Continuation based Cについて}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
18 \begin{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
19 \item
bfb290984b07 create slide.tex
kent
parents:
diff changeset
20 \end{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
21 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
22
bfb290984b07 create slide.tex
kent
parents:
diff changeset
23 \begin{frame}[fragile]
bfb290984b07 create slide.tex
kent
parents:
diff changeset
24 \frametitle{CbCコード例}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
25 \begin{columns}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
26 \column{.4\textwidth}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
27 \begin{verbatim}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
28 __code while_process(int total, int count){
bfb290984b07 create slide.tex
kent
parents:
diff changeset
29 total += count;
bfb290984b07 create slide.tex
kent
parents:
diff changeset
30 count++;
bfb290984b07 create slide.tex
kent
parents:
diff changeset
31 goto while_cond(total, count);
bfb290984b07 create slide.tex
kent
parents:
diff changeset
32 }
bfb290984b07 create slide.tex
kent
parents:
diff changeset
33 __code while_cond(int total, int count){
bfb290984b07 create slide.tex
kent
parents:
diff changeset
34 if ( count <= 100 ){
bfb290984b07 create slide.tex
kent
parents:
diff changeset
35 goto while_process(total, count);
bfb290984b07 create slide.tex
kent
parents:
diff changeset
36 }else{
bfb290984b07 create slide.tex
kent
parents:
diff changeset
37 goto while_end(total);
bfb290984b07 create slide.tex
kent
parents:
diff changeset
38 }
bfb290984b07 create slide.tex
kent
parents:
diff changeset
39 }
bfb290984b07 create slide.tex
kent
parents:
diff changeset
40 __code while_end(int total){
bfb290984b07 create slide.tex
kent
parents:
diff changeset
41 goto cs_exit(0);
bfb290984b07 create slide.tex
kent
parents:
diff changeset
42 }
bfb290984b07 create slide.tex
kent
parents:
diff changeset
43 \end{verbatim}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
44 \column{.3\textwidth}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
45 \includegraphics[width=.9\textwidth]{figures/CbC-loop.eps}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
46 \end{columns}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
47 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
48
bfb290984b07 create slide.tex
kent
parents:
diff changeset
49 \begin{frame}[fragile]
bfb290984b07 create slide.tex
kent
parents:
diff changeset
50 \frametitle{実装に必要な構文}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
51 \begin{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
52 \item コードセグメント宣言 \verb|\_\_ code cs(int a, char *b)|
bfb290984b07 create slide.tex
kent
parents:
diff changeset
53 \item 継続 \verb|goto cs(10, "abc");|
bfb290984b07 create slide.tex
kent
parents:
diff changeset
54 \end{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
55 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
56
bfb290984b07 create slide.tex
kent
parents:
diff changeset
57 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
58 \frametitle{GNU Compiler Collection}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
59 \begin{columns}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
60 \column{.5\textwidth}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
61 \includegraphics[width=\textwidth]{figures/GCC-pass-slide.eps}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
62 \column{.3\textwidth}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
63 \begin{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
64 \item aiueo
bfb290984b07 create slide.tex
kent
parents:
diff changeset
65 \item aiueo
bfb290984b07 create slide.tex
kent
parents:
diff changeset
66 \end{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
67 \end{columns}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
68 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
69
bfb290984b07 create slide.tex
kent
parents:
diff changeset
70
bfb290984b07 create slide.tex
kent
parents:
diff changeset
71 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
72 \frametitle{Tail call elimination}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
73 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
74
bfb290984b07 create slide.tex
kent
parents:
diff changeset
75 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
76 \frametitle{実装}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
77 \begin{description}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
78 \item \_\_code トークンの追加
bfb290984b07 create slide.tex
kent
parents:
diff changeset
79 \item code segmentのパース
bfb290984b07 create slide.tex
kent
parents:
diff changeset
80 \item gotoのパース
bfb290984b07 create slide.tex
kent
parents:
diff changeset
81 \item \alert<2>{tree/RTL変換 (expand\_call)}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
82 \item その他(エラー検出など)
bfb290984b07 create slide.tex
kent
parents:
diff changeset
83 \end{description}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
84 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
85
bfb290984b07 create slide.tex
kent
parents:
diff changeset
86 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
87 \frametitle{expand\_call}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
88 \begin{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
89 \item 関数呼び出しのtreeからRTLへ変換する
bfb290984b07 create slide.tex
kent
parents:
diff changeset
90 \item Tail callが可能ならその最適化を行う
bfb290984b07 create slide.tex
kent
parents:
diff changeset
91 \item この関数のみで1200行もある
bfb290984b07 create slide.tex
kent
parents:
diff changeset
92 \item そのほとんどがTail call可否の判定
bfb290984b07 create slide.tex
kent
parents:
diff changeset
93 \item そして読みづらい
bfb290984b07 create slide.tex
kent
parents:
diff changeset
94 \end{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
95 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
96
bfb290984b07 create slide.tex
kent
parents:
diff changeset
97 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
98 \frametitle{expand\_cbc\_goto}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
99 \begin{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
100 \item code segmentへのgotoを表したtreeを受け取る
bfb290984b07 create slide.tex
kent
parents:
diff changeset
101 \item 確実にTail callでcode segmentにgoto
bfb290984b07 create slide.tex
kent
parents:
diff changeset
102 \item 無駄なTail call可否判定を削除
bfb290984b07 create slide.tex
kent
parents:
diff changeset
103 \end{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
104 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
105
bfb290984b07 create slide.tex
kent
parents:
diff changeset
106
bfb290984b07 create slide.tex
kent
parents:
diff changeset
107 \begin{frame}[fragile]
bfb290984b07 create slide.tex
kent
parents:
diff changeset
108 \frametitle{評価(ベンチマーク)}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
109 \begin{itemize}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
110 \item 環境 i386 fedora core
bfb290984b07 create slide.tex
kent
parents:
diff changeset
111 \item 使用したプログラム conv1
bfb290984b07 create slide.tex
kent
parents:
diff changeset
112 \end{itemize}<++>
bfb290984b07 create slide.tex
kent
parents:
diff changeset
113 \centering
bfb290984b07 create slide.tex
kent
parents:
diff changeset
114 \begin{tabular}{|l|r|r|r|r|} \hline
bfb290984b07 create slide.tex
kent
parents:
diff changeset
115 & ./conv1 0 & ./conv1 1 & ./conv1 2 & ./conv1 3 \\ \hline
bfb290984b07 create slide.tex
kent
parents:
diff changeset
116 Micro-C & 5.25 & 8.97 & 2.19 & 2.73 \\ \hline \hline
bfb290984b07 create slide.tex
kent
parents:
diff changeset
117 GCC & 3.69 & 4.87 & 3.08 & 3.65 \\ \hline
bfb290984b07 create slide.tex
kent
parents:
diff changeset
118 GCC (+omit) & 2.74 & 4.20 & 2.25 & 2.76 \\ \hline
bfb290984b07 create slide.tex
kent
parents:
diff changeset
119 GCC (+fastcall) & 2.70 & 3.44 & 1.76 & 2.34 \\ \hline \hline
bfb290984b07 create slide.tex
kent
parents:
diff changeset
120 TCC & 4.15 &122.28& 84.91&102.59\\ \hline
bfb290984b07 create slide.tex
kent
parents:
diff changeset
121 \end{tabular}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
122 \begin{description}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
123 \item[+omit] -fomit-frame-pointerオプションを付加
bfb290984b07 create slide.tex
kent
parents:
diff changeset
124 \item[+fastcall] \verb|__attribute__ ((fastcall))|を付加
bfb290984b07 create slide.tex
kent
parents:
diff changeset
125 \end{description}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
126 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
127
bfb290984b07 create slide.tex
kent
parents:
diff changeset
128 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
129 \frametitle{まとめ}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
130 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
131
bfb290984b07 create slide.tex
kent
parents:
diff changeset
132 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
133 \frametitle{}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
134 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
135
bfb290984b07 create slide.tex
kent
parents:
diff changeset
136 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
137 \frametitle{}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
138 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
139
bfb290984b07 create slide.tex
kent
parents:
diff changeset
140 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
141 \frametitle{}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
142 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
143
bfb290984b07 create slide.tex
kent
parents:
diff changeset
144 \begin{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
145 \frametitle{}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
146 \end{frame}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
147
bfb290984b07 create slide.tex
kent
parents:
diff changeset
148 \end{document}
bfb290984b07 create slide.tex
kent
parents:
diff changeset
149
bfb290984b07 create slide.tex
kent
parents:
diff changeset
150
bfb290984b07 create slide.tex
kent
parents:
diff changeset
151
bfb290984b07 create slide.tex
kent
parents:
diff changeset
152