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