# HG changeset patch # User mir3636 # Date 1524391139 -32400 # Node ID aa9be79a7569ca34a88b95659a0e21963a0bffec # Parent 0e42707ddeb2c67b38eae500914244d51a22d7e3 fix diff -r 0e42707ddeb2 -r aa9be79a7569 Paper/sigos.pdf Binary file Paper/sigos.pdf has changed diff -r 0e42707ddeb2 -r aa9be79a7569 Paper/sigos.tex --- a/Paper/sigos.tex Sun Apr 22 18:52:38 2018 +0900 +++ b/Paper/sigos.tex Sun Apr 22 18:58:59 2018 +0900 @@ -148,7 +148,15 @@ \section{Gears におけるメタ計算} Gears OS ではメタ計算を柔軟に記述するためのプログラミング言語の単位として Code Gear、Data Gear という単位を用いる。 -Code Gear、Data Gear にはそれぞれメタレベルの単位である Meta Code Gear、Meta Data Gear が存在し、これらを用いてメタ計算を実現する。 +Code Gear、Data Gear にはそれぞれメタレベルの単位である Meta Code Gear、Meta Data Gear が存在し、これらを用いてメタ計算を実現する。図\ref{fig:metaCS} + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=70mm]{./pic/metaCS.pdf} + \end{center} + \caption{Gears でのメタ計算} + \label{fig:metaCS} +\end{figure} CbC は軽量継続 (goto文) による遷移を行うので、継続前の Code Gear に戻ることはなく、状態遷移ベースのプログラミングに適している。 CbC は LLVM\cite{llvm} と GCC\cite{gcc} 上で実装されている。 @@ -163,7 +171,7 @@ ノーマルレベルでは Context を直接見ることはできない。 Code Gear の継続は関数型プログラミングからみると継続先の Context を含む Closure となっている。 -これを記述するために継続に不定長引数を追加する構文をスクプリトの変換機能として用意した図。\ref{varargnext} +これを記述するために継続に不定長引数を追加する構文をスクプリトの変換機能として用意した。Code \ref{varargnext} メタ計算側ではこれらの Context を常に持ち歩いているので goto 文で引数を用いることはなく、 行き先は Code Gear の番号のみで指定される。 @@ -190,14 +198,6 @@ %Meta Code Gear は通常の Code Gear の直後に遷移され、メタ計算を実行する。 %これを図示したものが図\ref{fig:metaCS}である。 -\begin{figure}[ht] - \begin{center} - \includegraphics[width=70mm]{./pic/metaCS.pdf} - \end{center} - \caption{Gears でのメタ計算} - \label{fig:metaCS} -\end{figure} - \section{Gears OS の構成} Gears OS は以下の要素で構成される。