# HG changeset patch # User mir3636 # Date 1487065706 -32400 # Node ID 5b368e14bb64f45e475c1eb2538ef293f905c21c # Parent a2e61c11df3ccd1c80de3172d22a22adc1901759 update diff -r a2e61c11df3c -r 5b368e14bb64 final_main/chapter2.tex --- a/final_main/chapter2.tex Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/chapter2.tex Tue Feb 14 18:48:26 2017 +0900 @@ -1,7 +1,8 @@ \chapter{Continuation based C (CbC)} \section{Continuation based C (CbC)} CbC は 処理を Code Gear とした単位を用いて記述するプログラミング言語である。 -Code Gear から次の Code Gear へと goto による継続で遷移をし処理を行う。 +Code Gear は入力と出力を持ち、CbC では引数が入出力となっている。 +Code Gear から次の Code Gear へと goto による継続で遷移で処理を行い、引数として出力を与える。 図\ref{fig:cs}は Code Gear 間の処理の流れを表している。 \begin{figure}[htpb] @@ -16,9 +17,12 @@ Code Gear は CbC における最も基本的な処理単位である。 リスト \ref{code_simple} は最も基本的な CbC のコードの一例で、図 \ref{fig:code_simple}はそれを図示したものである。 CbC では Code Gear は \_\_code という型を持つ関数の構文で定義される。 +ただし、これは \_\_code 型の戻り値を返すという意味ではなく、Code Gear であることを示すフラグのようなものである。 + Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。 goto の後に Code Gear 名と引数を並べて、次の Code Gear の遷移を記述する。 -この goto の行き先を継続と呼ぶ。 +リスト \ref{code_simple} の goto cs1(a+b); などがこれにたる。 +この goto の行き先を継続と呼び、このときの a+b が次の Code Gear への出力となる。 Scheme の継続と異なり CbC には呼び出し元の環境がないので、この継続は単なる行き先である。 したがってこれを軽量継続と呼ぶこともある。 軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようにする。 @@ -77,6 +81,14 @@ } \end{lstlisting} +\begin{figure}[htpb] + \begin{center} + \scalebox{0.55}{\includegraphics{fig/factorial.pdf}} + \end{center} + \caption{階乗を求める CbC プログラムの軽量継続図} + \label{fig:factorial} +\end{figure} + \section{環境付き継続} 環境付き継続は C との互換性のために必要な機能である。 CbC と C の記述を交える際、CbC の Code Gear から C の関数の呼び出しは問題なく行える。 diff -r a2e61c11df3c -r 5b368e14bb64 final_main/chapter3.tex --- a/final_main/chapter3.tex Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/chapter3.tex Tue Feb 14 18:48:26 2017 +0900 @@ -33,43 +33,26 @@ %\end{figure} \section{Context} -Gears OS では Context と呼ばれる接続可能な Code/Data Gear のリスト、TaskQueue へのポインタ、Persistent Data Tree へのポインタ、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。 +Gears OS では Context と呼ばれる接続可能な Code/Data Gear のリスト、TaskQueue へのポインタ、Persistent Data Tree へのポインタ、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear である。 Gears OS は必要な Code/Data Gear に参照したい場合、この Context を通す必要がある。 %メインとなる Context と Worker 用の Context があり、TaskQueue と Persistent Data Tree は共有される。 %Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉することはできない。 %Persistent Data Tree への書き込みのみで相互作用を発生させ目的の処理を達成する。 -しかし、Context を直接扱うのはセキュリティ上好ましくない。 -そこで Context から必要なデータを取り出して Code Gear に接続する Meta Code Gear である stub を定義し、これを介して間接的に必要な Data Gear にアクセスする。 - - - %現在 CbC で Gears OS を記述すると通常の Computation に加えて Meta Computation である stub を記述する必要がある。 %Meta Computation - %Context や stub は Meta Computation であるため。 -\section{Meta Code Gear} -Gears OS では Code Gear 間の遷移に Meta レベルの Meta Code Gear を挟む。 -その様子を表したのが図 \ref{fig:metaCS}である。 -Meta Code Gear は メモリの確保やネットワーク管理などの Meta Computation を行う Code Gear である。 -通常の Code Gear ではこれらの Meta Computation は書かず、Meta Code Gear に必要に応じて記述することになる。 -%通常レベルの Code Gear からは Meta Code Gear への継続は見えず、通常レベルの Code Gear に直接継続しているように見えるべきである +\section{stub Code Gear} +Code Gear が必要とする Data Gear を取り出す際に Context を通す必要がある。 +しかし、Context を直接扱うのはセキュリティ上好ましくない。 +そこで Context から必要なデータを取り出して Code Gear に接続する stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。 +stub Code Gear は Code Gear が Code Gear へと継続する間に挟まれる。 +必要とする Data Gear を Context から取り出すという処理を行うものである。 +stub Code Gear は Code Gear 毎に生成される。 -\begin{figure}[htpb] - \begin{center} - \scalebox{0.55}{\includegraphics{fig/metaCS.pdf}} - \end{center} - \caption{meta computation} - \label{fig:metaCS} -\end{figure} - -\section{stub Code Gear} -Gears OS では Code Gear は Meta Code Gear に継続し、その後 Code Gear に継続すると述べたが、正確には Meta Code Gear から Code Gear に継続する際に stub Code Gear を挟む。 -stub Code Gear は、Code Gear が必要とする Data Gear を context から取り出すという処理を行うものである。 -stub Code Gear は Code Gear 毎に生成される。 %この機能により、CbC は Code Gear のみでなく Data Gear を単位として用いることが可能になった。 %Meta Code Gear、Meta Data Gear により meta computation を通常の Code Gear 内に記述せずにすむ、Code Gear 間に実行される Meta Code Gear で継続先を変更する、エラーハンドリングを行うといった使い方ができるようになるだろう。 @@ -97,9 +80,36 @@ % \section{interface の記述} -interface を記述することで +interface を記述することで Context から Code Gear が呼び出せるようになった。 +create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。 +return で interface を返し、その先で interface で指定した Code Gear へ継続できるようになった。 + +%interface の実装で関数呼び出しせずに使えるようになった +%impliment の型は interface +%create(impl)? +%create で interface と impliment の初期化を行ってる + +%api +%impliment -\begin{lstlisting}[frame=lrbt,label=interface,caption={stack の interface}] +\begin{lstlisting}[frame=lrbt,label=interface,caption={interface}] +typedef struct Stack{ + union Data* stack; + union Data* data; + union Data* data1; + __code whenEmpty(...); + __code clear(Impl* stack,__code next(...)); + __code push(Impl* stack,union Data* data, __code next(...)); + __code pop(Impl* stack, __code next(union Data*, ...)); + __code pop2(Impl* stack, union Data** data, union Data** data1, __code next(union Data**, union Data**, ...)); + __code isEmpty(Impl* stack, __code next(...), __code whenEmpty(...)); + __code get(Impl* stack, union Data** data, __code next(...)); + __code get2(Impl* stack,..., __code next(...)); + __code next(...); +} Stack; +\end{lstlisting} + +\begin{lstlisting}[frame=lrbt,label=create,caption={createSingleLinkedStack}] Stack* createSingleLinkedStack(struct Context* context) { struct Stack* stack = new Stack(); struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack(); @@ -116,6 +126,3 @@ } \end{lstlisting} -%api -%impliment - diff -r a2e61c11df3c -r 5b368e14bb64 final_main/chapter4.tex --- a/final_main/chapter4.tex Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/chapter4.tex Tue Feb 14 18:48:26 2017 +0900 @@ -16,7 +16,7 @@ \begin{description} \item[libast]\mbox{}\\ - Abstract Syntax Tree (AST) や C の型等をクラスとして利用できるようにしたライブラリ、AST の説明は後述する。% AST は ``-Xclang -ast-dump'' オプションを付加することで表示できる. + Abstract Syntax Tree (AST) や C の型等をクラスとして利用できるようにしたライブラリ。%、AST の説明は後述する。% AST は ``-Xclang -ast-dump'' オプションを付加することで表示できる. \item[liblex]\mbox{}\\ 字句解析ライブラリ、マクロの展開等の前処理系も担当する。 \item[libparse]\mbox{}\\ @@ -29,6 +29,23 @@ ドライバ、各ライブラリを用いて求められた処理を行う。 \end{description} +これを踏まえて clang が C のコードを LLVM IR に変換する処理について説明する。 +clang が C のコードを LLVM IR に変換する処理の過程を簡潔に図示したものである。 +以下の図 \ref{fig:clangProcess} は clang が C のコードを LLVM IR に変換する処理の過程を簡潔に図示したものである。 +clang は C のソースコードを受け取るとまずその解析を libparser による parser を用いて行い、libsema を用いて 解析結果から AST を構築する。 +そしてその AST を libcodegen を用いて LLVM IR に変換する。 + +%AST はソースコードの解析結果を保持したツリーである。 +%AST は “-Xclang -ast-dump” というオプションを付加することで表示することもできる。 + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.35}{\includegraphics{fig/clangProcess.pdf}} + \end{center} + \caption{clang の 処理過程} + \label{fig:clangProcess} +\end{figure} + \section{LLVM の基本構造} LLVM は LLVM IR をターゲットのアセンブリ言語に直接的に変換を行うわけではない。 LLVM では、最適化や中間表現の変換を何段階か行う。 diff -r a2e61c11df3c -r 5b368e14bb64 final_main/chapter5.tex --- a/final_main/chapter5.tex Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/chapter5.tex Tue Feb 14 18:48:26 2017 +0900 @@ -12,7 +12,8 @@ stub を生成するために perl スクリプトは指定された cbc ファイルの \_\_code型である Code Gear を取得し、引数から必要な Data Gear を選択する。 この時既に stub Code Gear が生成されている Code Gear は無視される。 -生成された stub Code Gear と一緒に cbc ファイル(リスト\ref{stack_cbc})から c ファイル(\ref{stack_c})を出力する。 +cbc ファイル(リスト\ref{stack_cbc}) に生成した stub Code Gear を c ファイル(\ref{stack_c})を出力する。 + \begin{lstlisting}[frame=lrbt,label=stack_cbc,caption={\footnotesize SingleLinkedStack.cbc}] #include "../context.h" diff -r a2e61c11df3c -r 5b368e14bb64 final_main/chapter6.tex --- a/final_main/chapter6.tex Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/chapter6.tex Tue Feb 14 18:48:26 2017 +0900 @@ -1,1 +1,2 @@ \chapter{今後の課題} +本研究では diff -r a2e61c11df3c -r 5b368e14bb64 final_main/fig/clangProcess.pdf Binary file final_main/fig/clangProcess.pdf has changed diff -r a2e61c11df3c -r 5b368e14bb64 final_main/fig/factorial.pdf Binary file final_main/fig/factorial.pdf has changed diff -r a2e61c11df3c -r 5b368e14bb64 final_main/main.aux --- a/final_main/main.aux Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/main.aux Tue Feb 14 18:48:26 2017 +0900 @@ -10,38 +10,41 @@ \@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces goto による code gear 間の継続}}{2}} \newlabel{fig:cs}{{2.1}{2}} \@writefile{toc}{\contentsline {section}{\numberline {2.2}Code Gear}{2}} -\newlabel{code_simple}{{2.1}{2}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {2.1}\relax \fontsize {10}{12}\selectfont \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@ \def \leftmargin \leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ {\leftmargin \leftmargini \topsep 6\p@ plus2\p@ minus2\p@ \parsep 3\p@ plus2\p@ minus\p@ \itemsep \parsep }\belowdisplayskip \abovedisplayskip code segment の軽量継続}{2}} +\newlabel{code_simple}{{2.1}{3}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {2.1}\relax \fontsize {10}{12}\selectfont \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@ \def \leftmargin \leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ {\leftmargin \leftmargini \topsep 6\p@ plus2\p@ minus2\p@ \parsep 3\p@ plus2\p@ minus\p@ \itemsep \parsep }\belowdisplayskip \abovedisplayskip code segment の軽量継続}{3}} \@writefile{lof}{\contentsline {figure}{\numberline {2.2}{\ignorespaces code segment の軽量継続}}{3}} \newlabel{fig:code_simple}{{2.2}{3}} \newlabel{factorial}{{2.2}{3}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {2.2}\relax \fontsize {10}{12}\selectfont \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@ \def \leftmargin \leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ {\leftmargin \leftmargini \topsep 6\p@ plus2\p@ minus2\p@ \parsep 3\p@ plus2\p@ minus\p@ \itemsep \parsep }\belowdisplayskip \abovedisplayskip 階乗を求める CbC プログラムの例}{3}} -\@writefile{toc}{\contentsline {section}{\numberline {2.3}環境付き継続}{3}} +\@writefile{lof}{\contentsline {figure}{\numberline {2.3}{\ignorespaces 階乗を求める CbC プログラムの軽量継続図}}{4}} +\newlabel{fig:factorial}{{2.3}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {2.3}環境付き継続}{4}} \newlabel{gotoWithTheEnv}{{2.3}{4}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {2.3}環境付き継続}{4}} -\@writefile{lof}{\contentsline {figure}{\numberline {2.3}{\ignorespaces 環境付き継続}}{4}} -\newlabel{fig:gotoWithTheEnv}{{2.3}{4}} +\@writefile{lof}{\contentsline {figure}{\numberline {2.4}{\ignorespaces 環境付き継続}}{5}} +\newlabel{fig:gotoWithTheEnv}{{2.4}{5}} \@writefile{toc}{\contentsline {chapter}{\numberline {第3章}Gears OS}{6}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {3.1}Gears OS}{6}} \@writefile{toc}{\contentsline {section}{\numberline {3.2}Context}{6}} -\@writefile{toc}{\contentsline {section}{\numberline {3.3}Meta Code Gear}{6}} -\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces meta computation}}{7}} -\newlabel{fig:metaCS}{{3.1}{7}} -\@writefile{toc}{\contentsline {section}{\numberline {3.4}stub Code Gear}{7}} -\@writefile{toc}{\contentsline {section}{\numberline {3.5}interface の記述}{7}} +\@writefile{toc}{\contentsline {section}{\numberline {3.3}stub Code Gear}{6}} +\@writefile{toc}{\contentsline {section}{\numberline {3.4}interface の記述}{7}} \newlabel{interface}{{3.1}{7}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}stack の interface}{7}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}interface}{7}} +\newlabel{create}{{3.2}{7}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {3.2}createSingleLinkedStack}{7}} \@writefile{toc}{\contentsline {chapter}{\numberline {第4章}LLVM/clang による CbC の実装}{8}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {4.1}LLVM clang}{8}} \@writefile{toc}{\contentsline {section}{\numberline {4.2}clang の基本構造}{8}} \newlabel{sec:clang}{{4.2}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces clang の 処理過程}}{9}} +\newlabel{fig:clangProcess}{{4.1}{9}} \@writefile{toc}{\contentsline {section}{\numberline {4.3}LLVM の基本構造}{9}} -\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces LLVM の 処理過程}}{10}} -\newlabel{fig:llvmProcess}{{4.1}{10}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces LLVM の 処理過程}}{10}} +\newlabel{fig:llvmProcess}{{4.2}{10}} \@writefile{toc}{\contentsline {section}{\numberline {4.4}LLVM/clang のデバッグ}{10}} \newlabel{ir_a}{{4.1}{10}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {4.1}\relax \fontsize {10}{12}\selectfont \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@ \def \leftmargin \leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ {\leftmargin \leftmargini \topsep 6\p@ plus2\p@ minus2\p@ \parsep 3\p@ plus2\p@ minus\p@ \itemsep \parsep }\belowdisplayskip \abovedisplayskip LLVM IR コード 修正前}{10}} diff -r a2e61c11df3c -r 5b368e14bb64 final_main/main.dvi Binary file final_main/main.dvi has changed diff -r a2e61c11df3c -r 5b368e14bb64 final_main/main.lof --- a/final_main/main.lof Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/main.lof Tue Feb 14 18:48:26 2017 +0900 @@ -2,10 +2,11 @@ \addvspace {10\p@ } \contentsline {figure}{\numberline {2.1}{\ignorespaces goto による code gear 間の継続}}{2} \contentsline {figure}{\numberline {2.2}{\ignorespaces code segment の軽量継続}}{3} -\contentsline {figure}{\numberline {2.3}{\ignorespaces 環境付き継続}}{4} -\addvspace {10\p@ } -\contentsline {figure}{\numberline {3.1}{\ignorespaces meta computation}}{7} -\addvspace {10\p@ } -\contentsline {figure}{\numberline {4.1}{\ignorespaces LLVM の 処理過程}}{10} +\contentsline {figure}{\numberline {2.3}{\ignorespaces 階乗を求める CbC プログラムの軽量継続図}}{4} +\contentsline {figure}{\numberline {2.4}{\ignorespaces 環境付き継続}}{5} \addvspace {10\p@ } \addvspace {10\p@ } +\contentsline {figure}{\numberline {4.1}{\ignorespaces clang の 処理過程}}{9} +\contentsline {figure}{\numberline {4.2}{\ignorespaces LLVM の 処理過程}}{10} +\addvspace {10\p@ } +\addvspace {10\p@ } diff -r a2e61c11df3c -r 5b368e14bb64 final_main/main.log --- a/final_main/main.log Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/main.log Tue Feb 14 18:48:26 2017 +0900 @@ -1,4 +1,4 @@ -This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.2.4) 13 FEB 2017 20:28 +This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.2.4) 14 FEB 2017 18:46 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -172,44 +172,46 @@ LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <17.28> not available (Font) Font shape `JY1/gt/m/n' tried instead on input line 2. File: fig/codesegment.pdf Graphic file (type pdf) - -LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <10> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 27. -LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <10> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 27. -LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <10> not available -(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 27. - [2 + [2 ] +LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <10> not available +(Font) Font shape `JT1/gt/m/n' tried instead on input line 31. +LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <10> not available +(Font) Font shape `JY1/gt/m/n' tried instead on input line 31. +LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <10> not available +(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 31. File: fig/codesegment2.pdf Graphic file (type pdf) - [3] + +File: fig/factorial.pdf Graphic file (type pdf) + [3] LaTeX Font Warning: Font shape `JT1/mc/m/it' undefined -(Font) using `JT1/mc/m/n' instead on input line 97. +(Font) using `JT1/mc/m/n' instead on input line 109. LaTeX Font Warning: Font shape `JY1/mc/m/it' undefined -(Font) using `JY1/mc/m/n' instead on input line 97. +(Font) using `JY1/mc/m/n' instead on input line 109. File: fig/gotowithenv.pdf Graphic file (type pdf) -) (./chapter3.tex [4] [5] + [4]) (./chapter3.tex [5] 第 3 章 -File: fig/metaCS.pdf Graphic file (type pdf) - [6 +[6 ]) (./chapter4.tex [7] 第 4 章 [8 ] +File: fig/clangProcess.pdf Graphic file (type pdf) + [9] File: fig/llvmProcess.pdf Graphic file (type pdf) -Overfull \hbox (19.03606pt too wide) in paragraph at lines 61--62 +Overfull \hbox (19.03606pt too wide) in paragraph at lines 78--79 [] [] -[9] [10]) (./chapter5.tex [11] +[10]) (./chapter5.tex [11] 第 5 章 [12 @@ -231,12 +233,12 @@ ) Here is how much of TeX's memory you used: - 2545 strings out of 493683 - 34959 string characters out of 6149654 - 339243 words of memory out of 5000000 - 6089 multiletter control sequences out of 15000+600000 + 2553 strings out of 493683 + 35101 string characters out of 6149654 + 377243 words of memory out of 5000000 + 6096 multiletter control sequences out of 15000+600000 14691 words of font info for 58 fonts, out of 8000000 for 9000 929 hyphenation exceptions out of 8191 - 26i,5n,49p,564b,1689s stack positions out of 5000i,500n,10000p,200000b,80000s + 26i,5n,49p,564b,1677s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on main.dvi (24 pages, 95804 bytes). +Output written on main.dvi (24 pages, 100464 bytes). diff -r a2e61c11df3c -r 5b368e14bb64 final_main/main.lol --- a/final_main/main.lol Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/main.lol Tue Feb 14 18:48:26 2017 +0900 @@ -1,7 +1,8 @@ -\contentsline {lstlisting}{\numberline {2.1}\relax \fontsize {10}{12}\selectfont \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@ \def \leftmargin \leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ {\leftmargin \leftmargini \topsep 6\p@ plus2\p@ minus2\p@ \parsep 3\p@ plus2\p@ minus\p@ \itemsep \parsep }\belowdisplayskip \abovedisplayskip code segment の軽量継続}{2} +\contentsline {lstlisting}{\numberline {2.1}\relax \fontsize {10}{12}\selectfont \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@ \def \leftmargin \leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ {\leftmargin \leftmargini \topsep 6\p@ plus2\p@ minus2\p@ \parsep 3\p@ plus2\p@ minus\p@ \itemsep \parsep }\belowdisplayskip \abovedisplayskip code segment の軽量継続}{3} \contentsline {lstlisting}{\numberline {2.2}\relax \fontsize {10}{12}\selectfont \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@ \def \leftmargin \leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ {\leftmargin \leftmargini \topsep 6\p@ plus2\p@ minus2\p@ \parsep 3\p@ plus2\p@ minus\p@ \itemsep \parsep }\belowdisplayskip \abovedisplayskip 階乗を求める CbC プログラムの例}{3} \contentsline {lstlisting}{\numberline {2.3}環境付き継続}{4} -\contentsline {lstlisting}{\numberline {3.1}stack の interface}{7} +\contentsline {lstlisting}{\numberline {3.1}interface}{7} +\contentsline {lstlisting}{\numberline {3.2}createSingleLinkedStack}{7} \contentsline {lstlisting}{\numberline {4.1}\relax \fontsize {10}{12}\selectfont \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@ \def \leftmargin \leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ {\leftmargin \leftmargini \topsep 6\p@ plus2\p@ minus2\p@ \parsep 3\p@ plus2\p@ minus\p@ \itemsep \parsep }\belowdisplayskip \abovedisplayskip LLVM IR コード 修正前}{10} \contentsline {lstlisting}{\numberline {4.2}\relax \fontsize {10}{12}\selectfont \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@ \def \leftmargin \leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ {\leftmargin \leftmargini \topsep 6\p@ plus2\p@ minus2\p@ \parsep 3\p@ plus2\p@ minus\p@ \itemsep \parsep }\belowdisplayskip \abovedisplayskip LLVM IR コード 修正後}{11} \contentsline {lstlisting}{\numberline {5.1}\relax \fontsize {10}{12}\selectfont \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6\p@ plus3\p@ minus3\p@ \def \leftmargin \leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ {\leftmargin \leftmargini \topsep 6\p@ plus2\p@ minus2\p@ \parsep 3\p@ plus2\p@ minus\p@ \itemsep \parsep }\belowdisplayskip \abovedisplayskip SingleLinkedStack.cbc}{12} diff -r a2e61c11df3c -r 5b368e14bb64 final_main/main.pdf Binary file final_main/main.pdf has changed diff -r a2e61c11df3c -r 5b368e14bb64 final_main/main.tex --- a/final_main/main.tex Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/main.tex Tue Feb 14 18:48:26 2017 +0900 @@ -30,7 +30,7 @@ \icon{ \includegraphics[width=80mm,bb=0 0 595 642]{fig/ryukyu.pdf} %%元は 642じゃなくて842 } -\year{平成28年度 卒業論文} +\year{平成29年度 卒業論文} \belongto{琉球大学工学部情報工学科} \author{135756F 宮城 光希 \\ 指導教員 {河野 真治} } %% diff -r a2e61c11df3c -r 5b368e14bb64 final_main/main.toc --- a/final_main/main.toc Mon Feb 13 20:29:46 2017 +0900 +++ b/final_main/main.toc Tue Feb 14 18:48:26 2017 +0900 @@ -2,13 +2,12 @@ \contentsline {chapter}{\numberline {第2章}Continuation based C (CbC)}{2} \contentsline {section}{\numberline {2.1}Continuation based C (CbC)}{2} \contentsline {section}{\numberline {2.2}Code Gear}{2} -\contentsline {section}{\numberline {2.3}環境付き継続}{3} +\contentsline {section}{\numberline {2.3}環境付き継続}{4} \contentsline {chapter}{\numberline {第3章}Gears OS}{6} \contentsline {section}{\numberline {3.1}Gears OS}{6} \contentsline {section}{\numberline {3.2}Context}{6} -\contentsline {section}{\numberline {3.3}Meta Code Gear}{6} -\contentsline {section}{\numberline {3.4}stub Code Gear}{7} -\contentsline {section}{\numberline {3.5}interface の記述}{7} +\contentsline {section}{\numberline {3.3}stub Code Gear}{6} +\contentsline {section}{\numberline {3.4}interface の記述}{7} \contentsline {chapter}{\numberline {第4章}LLVM/clang による CbC の実装}{8} \contentsline {section}{\numberline {4.1}LLVM clang}{8} \contentsline {section}{\numberline {4.2}clang の基本構造}{8}