# HG changeset patch # User mir3636 # Date 1513758263 -32400 # Node ID 4f9b33ddd8ba141107698c1f2e56d7b56b958e88 # Parent 46f76bf0f61473822aa3a9bbb0e957ef38f4b5c0 fix diff -r 46f76bf0f614 -r 4f9b33ddd8ba Paper/main.tex --- a/Paper/main.tex Fri Nov 24 21:46:22 2017 +0900 +++ b/Paper/main.tex Wed Dec 20 17:24:23 2017 +0900 @@ -28,6 +28,8 @@ lineskip=-0.5ex, } \renewcommand{\lstlistingname}{Code} + \usepackage{caption} + \captionsetup[lstlisting]{font={small,tt}} \begin{document} @@ -59,7 +61,7 @@ \end{abstract} \begin{jkeyword} - +OS, プログラミング言語, コンパイラ, CbC, Gears OS \end{jkeyword} \maketitle @@ -186,7 +188,7 @@ Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。 Code\ref{context} は Context の定義で Code\ref{initcontext} は Context の生成である。 -\lstinputlisting[label=context, caption=Context]{./src/context1.c} +\lstinputlisting[caption=Context, label=context]{./src/context1.c} \lstinputlisting[label=initcontext, caption=initContext]{./src/initcontext.c} Data Gear は union と struct によって表現される。 @@ -206,9 +208,14 @@ %...の説明 %codegearの説明もっとする? -\lstinputlisting[label=excbc, caption=exstack]{./src/ex_stack.cbc} +\lstinputlisting[label=excbc, caption=CbC で記述された stack のコード]{./src/ex_stack.cbc} -\section{interface と impliment} +\section{CbC による Gears OS 記述の問題} +Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 +これらのメタ計算を自動生成、interface、implement の機能を導入することにより、ユーザーレベルにおける CbC 可読性を上げ、 +Gears OS を記述する上においてより良い構文をユーザーに提供することにした。 + +\section{interface と implement} interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。 呼び出される Code Gear の引数となる Data Gear はここで全て定義される。 @@ -218,11 +225,11 @@ \lstinputlisting[label=interface, caption=Interface]{./src/Stack.cbc} -Code\ref{impliment}は stack の impliment の例である。 -createImpl は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。 +Code\ref{implement}は stack の implement の例である。 +createImpl は関数呼び出しで呼び出され、interface と implement の初期化と Code Gear のポインタの設定を行う。 %return で interface を返し、その先で Code Gear や Data Gear へ継続できるようになる。 -\lstinputlisting[label=impliment, caption=Impliment]{./src/stackimpl.cbc} +\lstinputlisting[label=implement, caption=Implement]{./src/stackimpl.cbc} \section{Gearef、GearImpl} @@ -234,8 +241,8 @@ GearImpl は Context と interface 名、interface の変数名を指定して参照する。 Gearef と GearImpl を用いたコードが Code\ref{gearef2}である。 -\lstinputlisting[label=gearef1, caption=disableGearef]{./src/ex_code1} -\lstinputlisting[label=gearef2, caption=enableGearef]{./src/ex_code2} +\lstinputlisting[label=gearef1, caption=定義前のコード]{./src/ex_code1} +\lstinputlisting[label=gearef2, caption=Gearef、GearImplを用いたコード]{./src/ex_code2} \section{stub Code Gear} Code Gear が必要とする Data Gear を取り出す際に Context を通す必要があるが、 @@ -261,7 +268,7 @@ cbc ファイルから、生成した stub Code Gear を加えて stub を加えたコードに変換を行う。(Code\ref{stack_c}) -\lstinputlisting[label=stack_c, caption= stub]{./src/ex_stub} +\lstinputlisting[label=stack_c, caption=stub Code Gear]{./src/ex_stub} \section{Context の生成} generate\_context は Context.h、Interface.cbc、generate\_stub で生成されたImpl.cbc を見て Context を生成する Perl スクリプトである。 @@ -291,7 +298,7 @@ Context には Data Gear の Data Type の情報が格納されている。 この情報から確保される Data Gear のサイズなどを決定する。 -\lstinputlisting[label=init_context, caption=initContext]{./src/gencontext.c} +\lstinputlisting[label=init_context, caption=生成されたinitContext]{./src/gencontext.c} \section{今後の課題} 本研究では LLVM/Clang のデバッグ、interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う Perl スクリプトの生成を行なった。 diff -r 46f76bf0f614 -r 4f9b33ddd8ba Paper/pic/gears_structure.graffle Binary file Paper/pic/gears_structure.graffle has changed