changeset 9:11ad5b3e7b85

update
author mir3636
date Wed, 15 Feb 2017 14:53:26 +0900
parents b35c8fcff7d5
children 86f6bb9be40a
files final_main/chapter3.tex final_main/chapter5.tex final_main/main.pdf
diffstat 3 files changed, 11 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/final_main/chapter3.tex	Wed Feb 15 11:06:39 2017 +0900
+++ b/final_main/chapter3.tex	Wed Feb 15 14:53:26 2017 +0900
@@ -82,12 +82,12 @@
 そこで Code Gear がデータを参照するための Gearef というマクロを定義した。
 Gearef に Context と型を渡すことでデータの参照が行える。
 また impliment を参照する際も、ポインタでの記述が複雑になってしまうため 同様に GearImpl を定義した。
+GearImpl は Context と interface 名、interface の変数名を指定して参照する。
 Gearef と GearImpl を用いたコードがリスト\ref{Gearef}である。
 
 \begin{lstlisting}[frame=lrbt,label=ref,caption={Gearef、GearImplのないコード}]
 __code pushSingleLinkedStack_stub(struct Context* context) {
     SingleLinkedStack* stack = (SingleLinkedStack*)context->data[D_Stack]->Stack.stack->Stack.stack;
-    Data* data = Gearef(context, Stack)->data;
     Data* data = context->data[D_Stack]->Stack.data;
     enum Code next = context->data[D_Stack]->Stack.next;
     goto pushSingleLinkedStack(context, stack, data, next);
@@ -103,7 +103,6 @@
 }
 \end{lstlisting}
 
-
 \section{stub Code Gear}
 Code Gear が必要とする Data Gear を取り出す際に Context を通す必要がある。
 しかし、Context を直接扱うのはセキュリティ上好ましくない。
--- 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 へアクセスする。
Binary file final_main/main.pdf has changed