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
Binary file Slide/fig/MetaGear.pdf has changed
Binary file Slide/fig/gears_structure.pdf has changed
--- 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-&gt;clear = C_clearSingleLinkedStack;
     return stack;
 }
+
+__code pushSingleLinkedStack(struct
+    SingleLinkedStack* stack,union Data* data, __code next(...)) {
+    Element* element = new Element();
+    element-&gt;next = stack-&gt;top;
+    element-&gt;data = data;
+    stack-&gt;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 を選択する。