# HG changeset patch # User mir3636 # Date 1492689145 -32400 # Node ID 846e85189f3380bc8ba7b95c4bcad84d18ee0078 # Parent fd019b8f27818c592dc12bb135e0f80455cd63fe ka diff -r fd019b8f2781 -r 846e85189f33 paper/sigos.tex --- a/paper/sigos.tex Wed Apr 19 23:50:09 2017 +0900 +++ b/paper/sigos.tex Thu Apr 20 20:52:25 2017 +0900 @@ -91,6 +91,12 @@ % Introduce % Code Gear は関数に比べて細かく分割されているのでメタ計算をより柔軟に記述できる。 +% 研究目的 + +% 信頼性の高いOS +% これをアセンブラにしていろいろなアプリケーションを作る +% きょだいなCDGの上で動かすと既存のアプリケーションを動かすことができる + \section{Continuation based C (CbC)} CbC は Code Gear という処理の単位を用いて記述するプログラミング言語である。 Code Gear は CbC における最も基本的な処理単位である。 @@ -166,7 +172,25 @@ Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 これらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。 +最初にインターフェースを使う使用例を書く + + \section{interface の記述} +% union data はジェネラルなデータセグメントこれには +% goto のひきすうとしてつかう フレームを表している +関数呼び出しのabi +ひきすうで呼び出されるcg ひきすうはぜんぶ定義されていなければならない +メタデータセグメント +名前付きの変数が現れる +書き込みは**読み込みは* +いんたーふぇーすなので実装がいる + + + + + + + interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。 Code Gear、Data Gear に参照するために Context を通す必要があるが、 interface を記述することでデータ構造のapiと Data Gear を結びつけることが出来、呼び出しが容易になった。 @@ -176,6 +200,11 @@ \lstinputlisting[label=src:interface, caption=interface]{./src/Stack.cbc} \section{Gearef、GearImpl} + + + + + Context には Allocation 等で生成した Data Gear へのポインタが格納されている。 Code Gear が Context にアクセスする際、ポインタを使用してデータを取り出すため、リスト\ref{gearef1} のようにコードが煩雑になってしまう。 そこで Code Gear がデータを参照するための Gearef というマクロを定義した。 @@ -241,6 +270,8 @@ 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。 +% めたけいさんをどこに挟むかというのをかく 上 + %\begin{figure}[ht] % \begin{center} % \includegraphics[width=70mm]{./pic/cbc_goto.pdf}