Mercurial > hg > Papers > 2018 > mitsuki-sigos
changeset 24:8edb996bce46
fix
author | mir3636 |
---|---|
date | Fri, 19 Jan 2018 15:06:36 +0900 |
parents | bb495c751e40 |
children | 39f38ed9c7a2 |
files | Slide/fig/MetaGear.pdf Slide/fig/gears_structure.pdf Slide/prosym.html Slide/prosym.md |
diffstat | 4 files changed, 100 insertions(+), 38 deletions(-) [+] |
line wrap: on
line diff
--- a/Slide/prosym.html Fri Jan 19 07:45:21 2018 +0900 +++ b/Slide/prosym.html Fri Jan 19 15:06:36 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 07:45:08 +0900 with Markdown engine kramdown (1.13.2) + on 2018-01-19 14:50:21 +0900 with Markdown engine kramdown (1.13.2) using options {} --> @@ -221,16 +221,9 @@ <h1 id="gears-os--1">Gears OS の構成図</h1> <div style="text-align: center;"> - <img src="./fig/gears_structure.pdf" alt="gears_structure" width="600" /> + <img src="./fig/gears_structure.pdf" alt="gears_structure" width="900" /> </div> -<!-- -# CbC による Gears OS 記述の問題点 -- Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 -- 本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。 -- そのためのプロトタイプとして perl スクリプトを作成した。 ---> - </div> <div class='slide '> @@ -240,8 +233,34 @@ <li>Context とは使用される Code Gear と Data Gear を全て格納した Meta Data Gear である。</li> <li>Gears OSは必要なCode Gear、Data Gearに参照したい場合、このContext を通す必要がある。</li> </ul> +<div style="text-align: center;"> + <img src="./fig/Gearef.pdf" alt="gearef" width="900" /> +</div> -<p><img src="./fig/context.svg" alt="message" width="550" /></p> + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> +<h1 id="context-">context の定義</h1> + +<pre lang="contexr"><code>/* context define */ +struct Context { + int codeNum; //実行可能な code の数 + __code (**code) (struct Context*); //実行可能な code Gear のリスト + void* heapStart; //Data Gear の Allocate用のヒープ + void* heap; + long heapLimit; + int dataNum; //Data Gear の数 + union Data **data; //Data Gear のリスト +}; +</code></pre> + +<!-- +# CbC による Gears OS 記述の問題点 +- Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 +- 本研究ではこれらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。 +- そのためのプロトタイプとして perl スクリプトを作成した。 +--> </div> @@ -276,6 +295,10 @@ <!-- _S9SLIDE_ --> <h1 id="interface-1">Interface</h1> +<ul> + <li>impliment の例</li> +</ul> + <pre lang="impl"><code>Stack* createSingleLinkedStack(struct Context* context) { struct Stack* stack = new Stack(); struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack(); @@ -290,6 +313,16 @@ stack->clear = C_clearSingleLinkedStack; return stack; } + +__code pushSingleLinkedStack(struct + SingleLinkedStack* stack,union Data* data, __code next(...)) { + Element* element = new Element(); + element->next = stack->top; + element->data = data; + stack->top = element; + goto next(...); +} + </code></pre> <!-- @@ -303,22 +336,11 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="contextstub-code-gear-">Context、stub Code Gear の自動生成</h1> -<ul> - <li>Gears OS ではノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。</li> - <li>現在の CbC で Gears OS を記述すると、このメタ計算の記述も行わなくてはならず、これには多くの労力を要する。</li> - <li>この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。</li> -</ul> - - -</div> -<div class='slide '> -<!-- _S9SLIDE_ --> -<h1 id="meta-">Meta の生成</h1> +<h1 id="stub-code-gear">stub Code Gear</h1> <ul> <li>Code Gear が必要とする Data Gear を取り出す際に Context を通す必要がある。</li> - <li>しかし、メタであるContext をノーマルレベルの Code Gear から直接アクセスするのはよろしくない。</li> + <li>しかし、Meta Data Gear である Context をノーマルレベルの Code Gear から直接アクセスするのはよろしくない。</li> <li>そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。</li> </ul> @@ -338,6 +360,17 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> +<h1 id="contextstub-code-gear-">Context、stub Code Gear の自動生成</h1> +<ul> + <li>Gears OS ではノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。</li> + <li>現在の CbC で Gears OS を記述すると、このメタ計算の記述も行わなくてはならず、これには多くの労力を要する。</li> + <li>この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。</li> +</ul> + + +</div> +<div class='slide '> +<!-- _S9SLIDE_ --> <h1 id="stub-code-gear-">stub Code Gear の生成</h1> <ul> <li>stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。</li> @@ -363,7 +396,7 @@ </div> <div class='slide '> <!-- _S9SLIDE_ --> -<h1 id="context-">Context の生成</h1> +<h1 id="context--1">Context の生成</h1> <ul> <li>Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。</li>
--- a/Slide/prosym.md Fri Jan 19 07:45:21 2018 +0900 +++ b/Slide/prosym.md Fri Jan 19 15:06:36 2018 +0900 @@ -84,9 +84,31 @@ # Gears OS の構成図 <div style="text-align: center;"> - <img src="./fig/gears_structure.pdf" alt="gears_structure" width="600"> + <img src="./fig/gears_structure.pdf" alt="gears_structure" width="900"> +</div> + +# Context +- Context とは使用される Code Gear と Data Gear を全て格納した Meta Data Gear である。 +- Gears OSは必要なCode Gear、Data Gearに参照したい場合、このContext を通す必要がある。 +<div style="text-align: center;"> + <img src="./fig/Gearef.pdf" alt="gearef" width="900"> </div> +# context の定義 + +```contexr +/* context define */ +struct Context { + int codeNum; //実行可能な code の数 + __code (**code) (struct Context*); //実行可能な code Gear のリスト + void* heapStart; //Data Gear の Allocate用のヒープ + void* heap; + long heapLimit; + int dataNum; //Data Gear の数 + union Data **data; //Data Gear のリスト +}; +``` + <!-- # CbC による Gears OS 記述の問題点 - Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 @@ -94,12 +116,6 @@ - そのためのプロトタイプとして perl スクリプトを作成した。 --> -# Context -- Context とは使用される Code Gear と Data Gear を全て格納した Meta Data Gear である。 -- Gears OSは必要なCode Gear、Data Gearに参照したい場合、このContext を通す必要がある。 - -<img src="./fig/context.svg" alt="message" width="550" > - # Interface - Code Gear と Data Gear は Interface と呼ばれるまとまりとして記述される。 - Interface は使用される Data Gear の定義と、それに対する Code Gear の集合である。 @@ -124,6 +140,8 @@ # Interface +- impliment の例 + ```impl Stack* createSingleLinkedStack(struct Context* context) { struct Stack* stack = new Stack(); @@ -139,6 +157,16 @@ stack->clear = C_clearSingleLinkedStack; return stack; } + +__code pushSingleLinkedStack(struct + SingleLinkedStack* stack,union Data* data, __code next(...)) { + Element* element = new Element(); + element->next = stack->top; + element->data = data; + stack->top = element; + goto next(...); +} + ``` <!-- @@ -148,15 +176,10 @@ --> -# Context、stub Code Gear の自動生成 -- Gears OS ではノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。 -- 現在の CbC で Gears OS を記述すると、このメタ計算の記述も行わなくてはならず、これには多くの労力を要する。 -- この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。 - -# Meta の生成 +# stub Code Gear - Code Gear が必要とする Data Gear を取り出す際に Context を通す必要がある。 -- しかし、メタであるContext をノーマルレベルの Code Gear から直接アクセスするのはよろしくない。 +- しかし、Meta Data Gear である Context をノーマルレベルの Code Gear から直接アクセスするのはよろしくない。 - そこで Context から必要なデータを取り出して Code Gear に接続する、メタレベルの stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。 ```stub @@ -172,6 +195,12 @@ } ``` +# Context、stub Code Gear の自動生成 +- Gears OS ではノーマルレベルの計算の他に Context や stub などのメタ計算を記述する必要がある。 +- 現在の CbC で Gears OS を記述すると、このメタ計算の記述も行わなくてはならず、これには多くの労力を要する。 +- この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。 + + # stub Code Gear の生成 - stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。 - stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。