diff Slide/prosym.md @ 25:39f38ed9c7a2

fix
author mir3636
date Fri, 19 Jan 2018 18:33:56 +0900
parents 8edb996bce46
children 8a177b87a3f7
line wrap: on
line diff
--- a/Slide/prosym.md	Fri Jan 19 15:06:36 2018 +0900
+++ b/Slide/prosym.md	Fri Jan 19 18:33:56 2018 +0900
@@ -140,8 +140,7 @@
 
 # Interface
 
-- impliment の例
-
+- implement の例
 ```impl
 Stack* createSingleLinkedStack(struct Context* context) {
     struct Stack* stack = new Stack();
@@ -158,8 +157,7 @@
     return stack;
 }
 
-__code pushSingleLinkedStack(struct
-    SingleLinkedStack* stack,union Data* data, __code next(...)) {
+__code pushSingleLinkedStack(struct SingleLinkedStack* stack, union Data* data, __code next(...)) {
     Element* element = new Element();
     element->next = stack->top;
     element->data = data;
@@ -199,14 +197,17 @@
 - Gears OS ではノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。
 - 現在の CbC で Gears OS を記述すると、このメタ計算の記述も行わなくてはならず、これには多くの労力を要する。
 - この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。
+<div style="text-align: center;">
+ <img src="./fig/generate_context.pdf" alt="generate_context" width="900">
+</div>
 
 
 # stub Code Gear の生成
 - stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。
 - stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。
-- generate_stub は指定された cbc ファイルの __code型である Code Gear を取得。
-- 引数と interface を照らし合わせ、Gearef または GearImpl を決定する。
-- cbc ファイルのから、生成した stub Code Gear を加えて、c ファイルを生成する。
+- generate_stub は指定された cbc ファイルの __code で記述された Code Gear を取得。
+- Code Gear の引数と interface を照らし合わせ、Gearef または GearImpl を決定する。
+- cbc ファイルの Code Gear から、生成した stub Code Gear を加えたファイルを生成する。
 
 ```stub
 __code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
@@ -224,15 +225,14 @@
 # Context の生成
 
 - Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。 
-- generate_context は context.h から Data Gear、c ファイルから Code Gear を取得。
-- 取得した Code/Data Gear の enum の定義は enumCode.h、enumData.h に生成される。
-- Code/Data Gear の名前とポインタの対応は この enum と関数ポインタによって表現される。
-- generate_context は取得した Code/Data Gear から Context の生成を行うコードを生成する。
-- Context には Allocation で生成した Data Gear へのポインタも格納されているが、Data Gear の Allocation を行うコードは dataGearInit.c に生成される。
-- これらを自動生成することで Gears OS の記述量を約半分にすることができます。
-<img src="./fig/generate_context.svg" alt="message" width="800" >
+- generate_context は context.h から Data Gear、generate_stub から生成されたファイルから Code Gear を取得し、以下を生成する。
+    - リストで管理している Code/Data の名前とポインタを対応させるための enumCode.h、enumData.h
+    - 取得した Code/Data Gear から Context の生成を行う target-context
+    - Context を生成する際の Data Gear の Allocation を行う dataGearInit.c
 
-# 比較
+<div style="text-align: center;">
+ <img src="./fig/generate_context3.pdf" alt="generate_context3" width="900">
+</div>
 
 # 今後の課題
 - 本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。