Mercurial > hg > Papers > 2018 > nozomi-master
changeset 19:34de798b11c3
Add stub description
author | atton <atton@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 20 Jan 2017 14:53:16 +0900 |
parents | 415fa6d79d00 |
children | 4307454b56bb |
files | paper/cbc.tex paper/src/stub.cbc |
diffstat | 2 files changed, 26 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/cbc.tex Fri Jan 20 14:39:45 2017 +0900 +++ b/paper/cbc.tex Fri Jan 20 14:53:16 2017 +0900 @@ -158,11 +158,18 @@ Meta CodeGear は Context を引数に取る CodeGear として定義されている。 そのため、Meta CodeGear が DataGear の値を使う為には Context から DataGear を取り出す必要がある。 取り出す必要がある DataGear は enum を用いて定義し(リスト\ref{src:context} 11-14行)、 CodeGear を実行する際に data フィールドから取り出す。 - なお、この Context から DataGear を取り出す Meta CodeSegment を stub と呼ぶ。 \end{itemize} +なお、この Context から DataGear を取り出す Meta CodeSegment を stub と呼ぶ。 +stub の例をリスト\ref{src:stub}に示す。 +stub は Context が持つ DataGear のポインタ data に対して enum を用いてアクセスしている。 +現在、この stub は全ての CodeGear に対してユーザが1つずつ定義する必要がある。 +この作業は非常に煩雑であり、CodeGear の定義から生成するスクリプトを用いて定義の簡易化を行なっているが、コンパイラ側でのサポートは入っていない。 +この stub を型情報から自動生成するために Continuation based C における型システムを定義する必要がある。 + +\lstinputlisting[label=src:stub, caption=GearsOS における stub Meta CodeSegment] {src/stub.cbc} + % }}} - \section{メタ計算ライブラリ akasha を用いた赤黒木の実装の検証}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/stub.cbc Fri Jan 20 14:53:16 2017 +0900 @@ -0,0 +1,17 @@ +__code put(struct Context* context, + struct Tree* tree, + struct Node* root, + struct Allocate* allocate) +{ + /* ... */ +} + +__code put_stub(struct Context* context) +{ + goto put(context, + &context->data[Tree]->tree, + context->data[Tree]->tree.root, + &context->data[Allocate]->allocate); +} + +