Mercurial > hg > Papers > 2011 > nobu-thesis
changeset 8:60c8ce5eb0e0 default tip
modify miss spell
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 29 Nov 2011 16:37:03 +0900 |
parents | 24b02780ca8f |
children | |
files | nobu-midthesis.tex |
diffstat | 1 files changed, 15 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/nobu-midthesis.tex Sat Nov 19 16:22:19 2011 +0900 +++ b/nobu-midthesis.tex Tue Nov 29 16:37:03 2011 +0900 @@ -23,6 +23,7 @@ \title{Continuation based C コンパイラのGCC-4.6における実装} \author{学籍番号:085711E 氏名:大城信康 {}{} 指導教員 : 河野真治} %\date{H23 11/18 fri} +%\date{平成23 年11 月18 日} \maketitle \thispagestyle{fancy} @@ -47,8 +48,8 @@ 構文は C と同じであるが, ループ制御や関数コールが取り除かれる. \subsection{コードセグメント} -コードセグメントの記述は C の関数の構文と同じで, 型に“\_\_code” を使うことで宣言できる. -コードセグメントへの移動は“goto” の後にコードセグメント名と引数を並べて記述することで行える. +コードセグメントの記述は C の関数の構文と同じで, 型に``\_\_code'' を使うことで宣言できる. +コードセグメントへの移動は``goto'' の後にコードセグメント名と引数を並べて記述することで行える. 図\ref{fig:cs}はコードセグメント間の処理の流れを表している. \begin{figure}[htpb] @@ -61,9 +62,9 @@ %また,コードセグメント間の移動は軽量継続によって行われる. %プログラムの末尾に次のコードセグメントを記述し処理を続けていく. -%コードセグメントの記述の仕方は C の関数の記述と同じだが, 型に“\_\_code”を使って宣言を行うところだけが違う. +%コードセグメントの記述の仕方は C の関数の記述と同じだが, 型に``\_\_code''を使って宣言を行うところだけが違う. %コードセグメントへの処理の移りは call ではなく jmp で行われ,その為 C の関数の様に呼び出し元への復帰がない. -%構文では“\_\_code”で関数を宣言することでコードセグメントとして扱うようにしている. +%構文では``\_\_code''で関数を宣言することでコードセグメントとして扱うようにしている. \subsection{軽量継続(light-weight continuation)} コードセグメントは C の関数と違って返り値を持たず, 処理が終われば次のコードセグメントへと処理を移る. @@ -77,7 +78,7 @@ \section{GCC-4.6 への実装} % \subsection{軽量継続の実装} -GCCでの計量継続を Tail Call Ellimination (末尾除去)を強制することで実装する. +GCCでの軽量継続を Tail Call Ellimination (末尾除去)を強制することで実装する. これにより, コードセグメント間の移動を, call ではなく jmp 命令で実現する. コードセグメント自体には戻値はない. @@ -164,14 +165,15 @@ \end{verbatim} GCC内部では, \verb+__return+ は, 関数内で定義された \verb+_cbc_internal_return+関数へのポインタを返す. -戻値は, \verb+cbc_internal_return+ 関数内で定義された変数\verb+retval+を通して返される(Listing\ref{code:_ret_val}). - +戻値は, \verb+cbc_internal_return+ 関数内で定義された変数\verb+retval+を通して返される(Listing\ref{code:retval}) . \begin{figure}[h] \begin{minipage}[b]{.45\textwidth} - \begin{lstlisting}[caption=環境付き継続を行うコード,label=code:_ret_val] + \begin{lstlisting}[caption=環境付き継続を行うコード,label=code:retval] +({ __label__ _cbc_exit0; static int retval; // should be thread local -void _cbc_internal_return(int retval_, void *_envp){ +void _cbc_internal_return(int retval_, + void *_envp){ retval = retval_; goto _cbc_exit0; } @@ -180,6 +182,7 @@ return retval; } _cbc_internal_return; +}) \end{lstlisting} \end{minipage} \hfill @@ -219,13 +222,13 @@ \begin{thebibliography}{3} \bibitem{1}{河野真治}: -“継続を基本とした言語 CbC の gcc 上の実装”. 日本ソフトウェア科学会第 19 回大会論文集, Sep, 2002 +``継続を基本とした言語 CbC の gcc 上の実装''. 日本ソフトウェア科学会第 19 回大会論文集, Sep, 2002 \bibitem{2}{与儀健人,河野真治}: -“Continuation based CコンパイラのGCC-4.2による実装”. 琉球大学 情報工学科 学位論文, 2008 +``Continuation based CコンパイラのGCC-4.2による実装''. 琉球大学 情報工学科 学位論文, 2008 \bibitem{3}{GNU Compiler Collection (GCC) Internals}: -“http://gcc.gnu.org/onlinedocs/gccint/” +``http://gcc.gnu.org/onlinedocs/gccint/'' \end{thebibliography}