Mercurial > hg > Papers > 2011 > nobu-prosym
comparison Paper/nobu-prosym.tex @ 7:3d1135b3519c
add eps files
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Nov 2011 18:11:00 +0900 |
parents | ea43a580129b |
children | de1193768ef9 |
comparison
equal
deleted
inserted
replaced
6:ea43a580129b | 7:3d1135b3519c |
---|---|
227 \subsubsection{expand\_call} | 227 \subsubsection{expand\_call} |
228 ある関数が Tail Call Elimination を行えるかどうかは expand\_call 関数で判断される. | 228 ある関数が Tail Call Elimination を行えるかどうかは expand\_call 関数で判断される. |
229 expand\_call 関数内でチェックされる Tail Call Elimination が行える条件は以下になる. | 229 expand\_call 関数内でチェックされる Tail Call Elimination が行える条件は以下になる. |
230 | 230 |
231 \begin{itemize} | 231 \begin{itemize} |
232 \item[caller 側と callee 側の返す値の型が一致している.] | 232 \item caller 側と callee 側の返す値の型が一致している. |
233 \item[関数呼び出しがリターンの直前に行われている.] | 233 \item 関数呼び出しがリターンの直前に行われている. |
234 \item[呼出先関数の引数に用いられるスタックサイズが呼出元関数のそれより少ない.] | 234 \item 呼出先関数の引数に用いられるスタックサイズが呼出元関数のそれより少ない. |
235 \item[] | 235 \item[] |
236 \end{itemize} | 236 \end{itemize} |
237 | 237 |
238 | 238 |
239 CbC の実装では上記の条件を,以下の様にして解決させている. | 239 CbC の実装では上記の条件を,以下の様にして解決させている. |
240 | 240 |
241 \begin{itemize} | 241 \begin{itemize} |
242 \item[呼び出す関数がコードセグメントの場合返す値の型チェックを行わない.] | 242 \item 呼び出す関数がコードセグメントの場合返す値の型チェックを行わない. |
243 \item[コードセグメントへの継続を Generic Tree で表す際に,return の情報も直後に持たせる.] | 243 \item コードセグメントへの継続を Generic Tree で表す際に,return の情報も直後に持たせる. |
244 \item[スタックサイズは決め打ちで行う.] | 244 \item スタックサイズは決め打ちで行う. |
245 \item[] | 245 \item[] |
246 \end{itemize} | 246 \end{itemize} |
247 | 247 |
248 スタックサイズを決め打ちで行うことで,ベースポインタを変えずにスタックを扱うことができる. | 248 スタックサイズを決め打ちで行うことで,ベースポインタを変えずにスタックを扱うことができる. |
249 これも CbC の1つの特徴である. | 249 これも CbC の1つの特徴である. |
303 プログラムだと言える. | 303 プログラムだと言える. |
304 比較を行うのは以下のアーキテクチャと OS になる. | 304 比較を行うのは以下のアーキテクチャと OS になる. |
305 | 305 |
306 %\begin{description} | 306 %\begin{description} |
307 \begin{itemize} | 307 \begin{itemize} |
308 \item[x86/Linux] | 308 \item x86/Linux |
309 \item[x86/OS X] | 309 \item x86/OS X |
310 \end{itemize} | 310 \end{itemize} |
311 %\end{description} | 311 %\end{description} |
312 | |
312 また,比較を行うプログラムは最適化(-O0 オプション)を行わないものと, | 313 また,比較を行うプログラムは最適化(-O0 オプション)を行わないものと, |
313 速度最適化(-O2 -fomit-frame-pointer)を行うものの2つ, | 314 速度最適化(-O2 -fomit-frame-pointer)を行うものの2つ, |
314 それと -m32 オプションと -m64 オプションをつけたものそれぞれで行う. | 315 それと -m32 オプションと -m64 オプションをつけたものそれぞれで行う. |
315 | 316 |
316 表\ref{tab:speed-mc-vs-gcc-nonopt}が最適化無し, | 317 表\ref{tab:speed-mc-vs-gcc-nonopt}が最適化無し, |