Mercurial > hg > Papers > 2022 > soto-sigos
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}