Mercurial > hg > Papers > 2017 > mitsuki-thesis
diff final_main/chapter5.tex @ 9:11ad5b3e7b85
update
author | mir3636 |
---|---|
date | Wed, 15 Feb 2017 14:53:26 +0900 |
parents | b35c8fcff7d5 |
children | ddfca5037e41 |
line wrap: on
line diff
--- a/final_main/chapter5.tex Wed Feb 15 11:06:39 2017 +0900 +++ b/final_main/chapter5.tex Wed Feb 15 14:53:26 2017 +0900 @@ -2,20 +2,20 @@ Gears OS では 3 章で述べたように通常の Computation の他に Context や stub などの Meta Computation を記述する必要がある。 Gears OS を現在の CbC の機能のみを用いて記述すると Context や stub Code Gear の記述を行わなくてはならず、これには多くの労力を要する。 -そのため、この記述を助けるために Context や stub Code Gear を生成するスクリプトを作成した。 +そのため、この記述を助けるために Context を生成する generate\_context と stub Code Gear を生成する generate\_stub を perl スクリプトで作成した。 \section{stub Code Segment の生成} stub Code Gear は Code Gear 間の継続に挟まれる Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。 stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。 stub Code Gear を 自動生成することによって Code Gear の記述量を約半分にすることができる。 -stub を生成するために perl スクリプトは指定された cbc ファイルの \_\_code型である Code Gear を取得し、引数から必要な Data Gear を選択する。 +stub を生成するために generate\_stub は指定された cbc ファイルの \_\_code型である Code Gear を取得し、引数から必要な Data Gear を選択する。 +generate\_stub は引数と interface を照らし合わせ、Gearef または GearImpl を決定する。 この時既に stub Code Gear が記述されている Code Gear は無視される。 -cbc ファイル(リスト\ref{stack_cbc}) に生成した stub Code Gear を 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}] +\begin{lstlisting}[frame=lrbt,label=stack_cbc,caption={\footnotesize cbcファイルの例}] #include "../context.h" Stack* createSingleLinkedStack(struct Context* context) { @@ -85,13 +85,14 @@ \section{Context の生成} Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。 -Data Gear を取得するために perl スクリプトは context の定義 (リスト\ref{context}) を読み宣言された Data Gear を取得する。 +Data Gear を取得するために generate\_context は context の定義 (リスト\ref{context}) を読み宣言されている Data Gear を取得する。 Code Gear は指定された cbc ファイルから stub を見て取得を行う。 +取得した Code/Data Gear の enum の定義は enumCode.h、enumData.h に生成される。 -Context では Code Gear の名前とポインタの対応は生成する enum Code によって表現される。 +Context では Code Gear の名前とポインタの対応は generate\_context によって生成される enum Code と関数ポインタによって表現される。 実際に Code Gear に接続する際は enum Code を指定することで接続を行う。 -取得した Code/Data Gear の enum の定義は enumCode.h、enumData.h に生成される。 -取得した Code/Data Gear から Context の生成を行うコード (リスト\ref{init_context}) を生成する。 + +また、generate\_context は取得した Code/Data Gear から Context の生成を行うコード (リスト\ref{init_context}) も生成する。 Context には Allocation 等で生成した Data Gear へのポインタが格納されている。 Code Gear は Context を通して Data Gear へアクセスする。