Mercurial > hg > Papers > 2017 > mitsuki-sigos
comparison paper/sigos.tex @ 5:846e85189f33
ka
author | mir3636 |
---|---|
date | Thu, 20 Apr 2017 20:52:25 +0900 |
parents | fd019b8f2781 |
children | 00f95e081a85 |
comparison
equal
deleted
inserted
replaced
4:fd019b8f2781 | 5:846e85189f33 |
---|---|
89 % 本文はここから始まる | 89 % 本文はここから始まる |
90 | 90 |
91 % Introduce | 91 % Introduce |
92 % Code Gear は関数に比べて細かく分割されているのでメタ計算をより柔軟に記述できる。 | 92 % Code Gear は関数に比べて細かく分割されているのでメタ計算をより柔軟に記述できる。 |
93 | 93 |
94 % 研究目的 | |
95 | |
96 % 信頼性の高いOS | |
97 % これをアセンブラにしていろいろなアプリケーションを作る | |
98 % きょだいなCDGの上で動かすと既存のアプリケーションを動かすことができる | |
99 | |
94 \section{Continuation based C (CbC)} | 100 \section{Continuation based C (CbC)} |
95 CbC は Code Gear という処理の単位を用いて記述するプログラミング言語である。 | 101 CbC は Code Gear という処理の単位を用いて記述するプログラミング言語である。 |
96 Code Gear は CbC における最も基本的な処理単位である。 | 102 Code Gear は CbC における最も基本的な処理単位である。 |
97 Code Gear は入力と出力を持ち、CbC では引数が入出力となっている。 | 103 Code Gear は入力と出力を持ち、CbC では引数が入出力となっている。 |
98 CbC では Code Gear は \_\_code という型を持つ関数の構文で定義される。 | 104 CbC では Code Gear は \_\_code という型を持つ関数の構文で定義される。 |
164 \section{CbC による Gears OS 記述の問題} | 170 \section{CbC による Gears OS 記述の問題} |
165 | 171 |
166 Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 | 172 Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。 |
167 これらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。 | 173 これらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。 |
168 | 174 |
175 最初にインターフェースを使う使用例を書く | |
176 | |
177 | |
169 \section{interface の記述} | 178 \section{interface の記述} |
179 % union data はジェネラルなデータセグメントこれには | |
180 % goto のひきすうとしてつかう フレームを表している | |
181 関数呼び出しのabi | |
182 ひきすうで呼び出されるcg ひきすうはぜんぶ定義されていなければならない | |
183 メタデータセグメント | |
184 名前付きの変数が現れる | |
185 書き込みは**読み込みは* | |
186 いんたーふぇーすなので実装がいる | |
187 | |
188 | |
189 | |
190 | |
191 | |
192 | |
193 | |
170 interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。 | 194 interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。 |
171 Code Gear、Data Gear に参照するために Context を通す必要があるが、 | 195 Code Gear、Data Gear に参照するために Context を通す必要があるが、 |
172 interface を記述することでデータ構造のapiと Data Gear を結びつけることが出来、呼び出しが容易になった。 | 196 interface を記述することでデータ構造のapiと Data Gear を結びつけることが出来、呼び出しが容易になった。 |
173 %create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。 | 197 %create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。 |
174 %return で interface を返し、その先で Code Gear や Data Gear へ継続できるようになる。 | 198 %return で interface を返し、その先で Code Gear や Data Gear へ継続できるようになる。 |
175 | 199 |
176 \lstinputlisting[label=src:interface, caption=interface]{./src/Stack.cbc} | 200 \lstinputlisting[label=src:interface, caption=interface]{./src/Stack.cbc} |
177 | 201 |
178 \section{Gearef、GearImpl} | 202 \section{Gearef、GearImpl} |
203 | |
204 | |
205 | |
206 | |
207 | |
179 Context には Allocation 等で生成した Data Gear へのポインタが格納されている。 | 208 Context には Allocation 等で生成した Data Gear へのポインタが格納されている。 |
180 Code Gear が Context にアクセスする際、ポインタを使用してデータを取り出すため、リスト\ref{gearef1} のようにコードが煩雑になってしまう。 | 209 Code Gear が Context にアクセスする際、ポインタを使用してデータを取り出すため、リスト\ref{gearef1} のようにコードが煩雑になってしまう。 |
181 そこで Code Gear がデータを参照するための Gearef というマクロを定義した。 | 210 そこで Code Gear がデータを参照するための Gearef というマクロを定義した。 |
182 Gearef に Context と型を渡すことでデータの参照が行える。 | 211 Gearef に Context と型を渡すことでデータの参照が行える。 |
183 また impliment のデータを参照する際も、ポインタでの記述が複雑になってしまうため 同様に GearImpl を定義した。 | 212 また impliment のデータを参照する際も、ポインタでの記述が複雑になってしまうため 同様に GearImpl を定義した。 |
239 %しかし、現在のスクリプトでは stub | 268 %しかし、現在のスクリプトでは stub |
240 | 269 |
241 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 | 270 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。 |
242 また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。 | 271 また、今回 perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。 |
243 | 272 |
273 % めたけいさんをどこに挟むかというのをかく 上 | |
274 | |
244 %\begin{figure}[ht] | 275 %\begin{figure}[ht] |
245 % \begin{center} | 276 % \begin{center} |
246 % \includegraphics[width=70mm]{./pic/cbc_goto.pdf} | 277 % \includegraphics[width=70mm]{./pic/cbc_goto.pdf} |
247 % \end{center} | 278 % \end{center} |
248 % \caption{gotoによる Code Segment 間の接続} | 279 % \caption{gotoによる Code Segment 間の接続} |