view Paper/tex/cbc.tex @ 5:6c0b1fcbac2d

FIX SIGの論文ルールに基づいて修正
author soto <soto@cr.ie.u-ryukyu.ac.jp>
date Thu, 05 May 2022 17:38:06 +0900
parents 7434c0aa1859
children 9ec2d2ac1309
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}