# HG changeset patch # User mir3636 # Date 1516354436 -32400 # Node ID 39f38ed9c7a26f0fc7b358b07d684caa32d433c3 # Parent 8edb996bce462539aecb9b989dea2a6e23afd723 fix diff -r 8edb996bce46 -r 39f38ed9c7a2 Paper/pic/generate_context.pdf Binary file Paper/pic/generate_context.pdf has changed diff -r 8edb996bce46 -r 39f38ed9c7a2 Paper/pic/generate_context3.pdf Binary file Paper/pic/generate_context3.pdf has changed diff -r 8edb996bce46 -r 39f38ed9c7a2 Paper/pic/generate_context_2.graffle Binary file Paper/pic/generate_context_2.graffle has changed diff -r 8edb996bce46 -r 39f38ed9c7a2 Slide/fig/Gearef.graffle Binary file Slide/fig/Gearef.graffle has changed diff -r 8edb996bce46 -r 39f38ed9c7a2 Slide/fig/Gearef.pdf Binary file Slide/fig/Gearef.pdf has changed diff -r 8edb996bce46 -r 39f38ed9c7a2 Slide/fig/generate_context.graffle Binary file Slide/fig/generate_context.graffle has changed diff -r 8edb996bce46 -r 39f38ed9c7a2 Slide/fig/generate_context.pdf Binary file Slide/fig/generate_context.pdf has changed diff -r 8edb996bce46 -r 39f38ed9c7a2 Slide/fig/generate_context3.pdf Binary file Slide/fig/generate_context3.pdf has changed diff -r 8edb996bce46 -r 39f38ed9c7a2 Slide/fig/generate_stub.graffle Binary file Slide/fig/generate_stub.graffle has changed diff -r 8edb996bce46 -r 39f38ed9c7a2 Slide/fig/generate_stub.pdf Binary file Slide/fig/generate_stub.pdf has changed diff -r 8edb996bce46 -r 39f38ed9c7a2 Slide/prosym.html --- a/Slide/prosym.html Fri Jan 19 15:06:36 2018 +0900 +++ b/Slide/prosym.html Fri Jan 19 18:33:56 2018 +0900 @@ -86,7 +86,7 @@ @@ -295,11 +295,10 @@

Interface

- +
+ generate_context +
@@ -375,9 +376,9 @@
__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
@@ -400,26 +401,24 @@
 
 
  • 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 の記述量を約半分にすることができます。 -message
  • +
  • generate_context は context.h から Data Gear、generate_stub から生成されたファイルから Code Gear を取得し、以下を生成する。 +
      +
    • Context が持つ Code/Data Gear のリスト の Code/Data Gear 名とポインタを対応させるための enum の定義を記述した enumCode.h、enumData.h
    • +
    • 取得した Code/Data Gear から Context の生成を行う target-context
    • +
    • Context を生成する際に Data Gear の Allocation を行う dataGearInit.c
    • +
    +
+
+ generate_context3 +
+
-

比較

- - -
-
- -

今後の課題

+

今後の課題

  • 本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。
  • これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。
  • diff -r 8edb996bce46 -r 39f38ed9c7a2 Slide/prosym.md --- 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 スクリプトで作成した。 +
    + generate_context +
    # 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 の記述量を約半分にすることができます。 -message +- 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 -# 比較 +
    + generate_context3 +
    # 今後の課題 - 本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。