view Paper/tex/cbc.tex @ 3:952d4dbb7c6a

WIP 仮完成
author soto <soto@cr.ie.u-ryukyu.ac.jp>
date Thu, 05 May 2022 03:30:26 +0900
parents f9794e92f964
children 7434c0aa1859
line wrap: on
line source

\section{Continuation based C}
Continuation based C\cite{kaito-lola} (以下 CbC) は 
関数呼び出しの際にjmp命令で遷移をし、環境を持たずに遷移する
ことができるC言語である、
つまりC言語の下位言語にあたり、よりアセンブラに近い記述を行う

jmp命令であるため関数遷移をし、実行が終了しても
もとの関数に戻ることはない。
そのため次に遷移する Code Gear を指定する。
これは、関数型プログラミングでの末尾関数呼び出しに相当する。

Code Gear に Deta Gear を与え、それをもとに処理を行い、
出力として Data Gear を返し、また次の Code Gearに遷移
していく流れとなる。

CbC では CodeGear を処理の単位、
DataGear をデータの単位として記述するプログラミング言語である。

他のプログラミング言語とは違い、
Code Gear が 暗黙の環境を持たず、受け取った Data Gear のみを
もとに処理をすること、
さらに Code Gear 単位で処理が完結していることから、
検証に適したプログラミング言語であると言える。

また、プログラムを記述する際は、ノーマルレベルの計算の他に、メモリ管理、スレッド管理、資源管理等を記述しなければならない処理が存在する。
これらの計算はノーマルレベルの計算と区別してメタ計算と呼ぶ。

メタ計算は OS の機能を通して処理することが多く、信頼性の高い記述が求められる。
そのため、 CbC ではメタ計算を分離するために Meta CodeGear、 Meta DataGear を定義している

Meta CodeGear は CbC 上でのメタ計算で、通常の CodeGear を実行する際に必要なメタ計算を分離するための単位である。
図 \ref{fig:meta-cgdg} のように CodeGear を実行する前後や DataGear の大枠として Meta Gear が存在している。

\begin{figure}[htpb]
 \begin{center}
  \scalebox{0.35}{\includegraphics{fig/cbc_codegear.pdf}}
 \end{center}
 \caption{メタ計算を可視化した CodeGear と DataGear}
 \label{fig:meta-cgdg}
\end{figure}