comparison Paper/nobu-prosym.tex @ 85:7ed352ddae10

modify spell miss
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Sat, 07 Jan 2012 12:52:25 +0900
parents de1f203636d1
children
comparison
equal deleted inserted replaced
84:fb5994f49abd 85:7ed352ddae10
160 160
161 \begin{figure}[htpb] 161 \begin{figure}[htpb]
162 \begin{center} 162 \begin{center}
163 \scalebox{0.35}{\includegraphics{figure/factorial.pdf}} 163 \scalebox{0.35}{\includegraphics{figure/factorial.pdf}}
164 \end{center} 164 \end{center}
165 \caption{階上を計算する CbC プログラムの例} 165 \caption{階乗を計算する CbC プログラムの例}
166 \label{fig:factorial} 166 \label{fig:factorial}
167 \end{figure} 167 \end{figure}
168 168
169 169
170 %\begin{center} 170 %\begin{center}
522 \subsubsection{環境付き継続の問題} 522 \subsubsection{環境付き継続の問題}
523 現在環境付き継続は 523 現在環境付き継続は
524 このコードを GCC 内部で生成することで実現している. これは正しく動作しているが, 524 このコードを GCC 内部で生成することで実現している. これは正しく動作しているが,
525 \verb+retval+に static を指定してしまうと, 525 \verb+retval+に static を指定してしまうと,
526 スレッドセーフな実装でなくなる. 526 スレッドセーフな実装でなくなる.
527 これを通常の変数にすると, 関数内の関数は closure として実装される. しかし, GCC 4.6 と Lion の 527 %これを通常の変数にすると, 関数内の関数は closure として実装される. しかし, GCC 4.6 と Lion の
528 組合せでは closure は正しく動作してないことがわかった. 528 %組合せでは closure は正しく動作してないことがわかった.
529 Thread local 変数を用いると, やはり closure が出力されてしまう. 529 Thread local 変数を用いると, やはり closure が出力されてしまう.
530 本来, 戻値用のレジスタが使用されれば問題ないが, 戻値の型は整数やポインタとは限らず, 530 スタックに値を確保する closure は, スタックを破棄していく CbC には向いていない.
531 戻値用のレジスタが使用されれば問題ないが, 戻値の型は整数やポインタとは限らず,
531 浮動小数点や構造体自体である可能性があり複雑である. 532 浮動小数点や構造体自体である可能性があり複雑である.
532 一つの解決策はレジスタ渡しと考えているが, 他の方法もありえる. 少し重いが setjmp を用いた実装方法もある. 533 一つの解決策はレジスタ渡しと考えているが, 他の方法もありえる. 少し重いが setjmp を用いた実装方法もある.
533 534
534 535
535 \subsection{引数の渡し方} 536 \subsection{引数の渡し方}