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 間の接続}