Mercurial > hg > Papers > 2022 > soto-sigos
view Paper/tex/cbc.tex @ 14:ba98083f9853 default tip
FIX
author | soto <soto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 27 May 2022 12:31:39 +0900 |
parents | 9ec2d2ac1309 |
children |
line wrap: on
line source
\section{Continuation based C} Continuation based C\cite{kaito-lola} (以下 CbC) は 関数呼び出しの際にjmp命令で遷移をし,環境を持たずに遷移する ことができるC言語である, すなわちC言語の下位言語にあたり,よりアセンブラに近い記述を行う. CbC では CodeGear を処理の単位, DataGear をデータの単位として記述するプログラミング言語である. jmp命令で関数遷移するため関数遷移し実行が終了しても,もとの関数に戻ることはない. そのため次に遷移する Code Gear を指定する. これは,関数型プログラミングでの末尾関数呼び出しに相当する. したがって,Code Gear に Deta Gear を与え,それをもとに処理を行い, 出力として Data Gear を返し,また次の Code Gearに遷移していく流れとなる. 他のプログラミング言語とは違い, 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}