Mercurial > hg > Papers > 2017 > mitsuki-prosym
changeset 25:39f38ed9c7a2
fix
author | mir3636 |
---|---|
date | Fri, 19 Jan 2018 18:33:56 +0900 |
parents | 8edb996bce46 |
children | 8a177b87a3f7 |
files | Paper/pic/generate_context.pdf Paper/pic/generate_context3.pdf Paper/pic/generate_context_2.graffle Slide/fig/Gearef.graffle Slide/fig/Gearef.pdf Slide/fig/generate_context.graffle Slide/fig/generate_context.pdf Slide/fig/generate_context3.pdf Slide/fig/generate_stub.graffle Slide/fig/generate_stub.pdf Slide/prosym.html Slide/prosym.md |
diffstat | 12 files changed, 38 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- 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 @@ <!-- === begin markdown block === generated by markdown/1.2.0 on Ruby 2.4.0 (2016-12-24) [x86_64-darwin16] - on 2018-01-19 14:50:21 +0900 with Markdown engine kramdown (1.13.2) + on 2018-01-19 18:24:07 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -295,11 +295,10 @@ <!-- _S9SLIDE_ --> <h1 id="interface-1">Interface</h1> -<ul> - <li>impliment の例</li> +<ul lang="impl"> + <li>implement の例</li> </ul> - -<pre lang="impl"><code>Stack* createSingleLinkedStack(struct Context* context) { +<pre><code>Stack* createSingleLinkedStack(struct Context* context) { struct Stack* stack = new Stack(); struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack(); stack->stack = (union Data*)singleLinkedStack; @@ -314,8 +313,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; @@ -366,6 +364,9 @@ <li>現在の CbC で Gears OS を記述すると、このメタ計算の記述も行わなくてはならず、これには多くの労力を要する。</li> <li>この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。</li> </ul> +<div style="text-align: center;"> + <img src="./fig/generate_context.pdf" alt="generate_context" width="900" /> +</div> </div> @@ -375,9 +376,9 @@ <ul> <li>stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。</li> <li>stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。</li> - <li>generate_stub は指定された cbc ファイルの __code型である Code Gear を取得。</li> - <li>引数と interface を照らし合わせ、Gearef または GearImpl を決定する。</li> - <li>cbc ファイルのから、生成した stub Code Gear を加えて、c ファイルを生成する。</li> + <li>generate_stub は指定された cbc ファイルの __code で記述された Code Gear を取得。</li> + <li>Code Gear の引数と interface を照らし合わせ、Gearef または GearImpl を決定する。</li> + <li>cbc ファイルの Code Gear から、生成した stub Code Gear を加えたファイルを生成する。</li> </ul> <pre lang="stub"><code>__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) { @@ -400,26 +401,24 @@ <ul> <li>Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。</li> - <li>generate_context は context.h から Data Gear、c ファイルから Code Gear を取得。</li> - <li>取得した Code/Data Gear の enum の定義は enumCode.h、enumData.h に生成される。</li> - <li>Code/Data Gear の名前とポインタの対応は この enum と関数ポインタによって表現される。</li> - <li>generate_context は取得した Code/Data Gear から Context の生成を行うコードを生成する。</li> - <li>Context には Allocation で生成した Data Gear へのポインタも格納されているが、Data Gear の Allocation を行うコードは dataGearInit.c に生成される。</li> - <li>これらを自動生成することで Gears OS の記述量を約半分にすることができます。 -<img src="./fig/generate_context.svg" alt="message" width="800" /></li> + <li>generate_context は context.h から Data Gear、generate_stub から生成されたファイルから Code Gear を取得し、以下を生成する。 + <ul> + <li>Context が持つ Code/Data Gear のリスト の Code/Data Gear 名とポインタを対応させるための enum の定義を記述した enumCode.h、enumData.h</li> + <li>取得した Code/Data Gear から Context の生成を行う target-context</li> + <li>Context を生成する際に Data Gear の Allocation を行う dataGearInit.c</li> + </ul> + </li> </ul> +<div style="text-align: center;"> + <img src="./fig/generate_context3.pdf" alt="generate_context3" width="900" /> +</div> + </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="section-2">比較</h1> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="section-3">今後の課題</h1> +<h1 id="section-2">今後の課題</h1> <ul> <li>本研究では interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う perl スクリプトの生成を行なった。</li> <li>これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。</li>
--- 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 スクリプトの生成を行なった。