Mercurial > hg > Papers > 2018 > nozomi-master
diff paper/cbc.tex @ 15:6dedd4ed6b6d
Update cbc description
author | atton <atton@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 19 Jan 2017 11:39:10 +0900 |
parents | 6bf2e0196a1e |
children | 3ffd17f96e06 |
line wrap: on
line diff
--- a/paper/cbc.tex Thu Jan 19 11:29:13 2017 +0900 +++ b/paper/cbc.tex Thu Jan 19 11:39:10 2017 +0900 @@ -26,6 +26,8 @@ % }}} +% {{{ Continuation based C における CodeSegment と DataSegment + \section{Continuation based C における CodeSegment と DataSegment} 最も基本的な CbC のソースコードをリスト\ref{src:goto}に、ソースコードが実行される流れを図\ref{fig:goto}に示す。 Continuation based C における CodeSegment は返り値を持たない関数として表現される。 @@ -51,9 +53,22 @@ CbC の軽量継続は呼び出し元の情報を持たないため、スタックを破棄しながら処理を続けていく。 よって、リスト\ref{src:goto} のプログラムでは cs0 から cs1 へと継続した後にcs0 へ戻ることはできない。 -% TODO: factorial +もう少し複雑な CbC のソースコードをリスト\ref{src:factrial}に、実行される流れを図\ref{fig:factrial}に示す。 +このソースコードは整数の階乗を求めるプログラムである。 +CodeSegment factorial0 では自分自身への再帰的な継続を用いて階乗を計算している。 +軽量継続時には関数呼び出しのスタックは存在しないが、計算中の値を DataSegment で持つことで再帰を含むループ処理も行なうことができる。 + +\lstinputlisting[label=src:factrial, caption=階乗を求める CbC プログラム] {src/factrial.cbc} +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.8]{fig/factorial.pdf} + \caption{階乗を求める CbC プログラム} + \label{fig:factrial} + \end{center} +\end{figure} +% }}} \section{MetaCodeSegment と MetaDataSegment} \section{GearsOS}