comparison paper/chapter/02-cbc.tex @ 80:a15db66cab3c

add other paper
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 05 Feb 2021 08:15:40 +0900
parents e88c0e26d331
children b1febd693942
comparison
equal deleted inserted replaced
79:3022da6f729f 80:a15db66cab3c
3 CbCでは通常の関数呼び出しの他に、 関数呼び出し時のスタックの操作を行わず、次のコードブロックに\texttt{jmp}命令で移動する継続が導入されている。 3 CbCでは通常の関数呼び出しの他に、 関数呼び出し時のスタックの操作を行わず、次のコードブロックに\texttt{jmp}命令で移動する継続が導入されている。
4 この継続はSchemeのcall/ccなどの環境を持つ継続とは異なり、 スタックを持たず環境を保存しない継続である為に軽量である事から軽量継続と呼べる。 4 この継続はSchemeのcall/ccなどの環境を持つ継続とは異なり、 スタックを持たず環境を保存しない継続である為に軽量である事から軽量継続と呼べる。
5 またCbCではこの軽量継続を用いて\texttt{for}文などのループの代わりに再起呼び出しを行う。 5 またCbCではこの軽量継続を用いて\texttt{for}文などのループの代わりに再起呼び出しを行う。
6 これは関数型プログラミングでのTail callスタイルでプログラミングすることに相当する。 6 これは関数型プログラミングでのTail callスタイルでプログラミングすることに相当する。
7 Agda よる関数型のCbCの記述も用意されている。 7 Agda よる関数型のCbCの記述も用意されている。
8 実際のOSやアプリケーションを記述する場合には、GCC\cite{cbcgcc}及びLLVM/clang上\cite{cbcllvm}のCbC実装を用いる。 8 実際のOSやアプリケーションを記述する場合には、GCC10\cite{cbcgcc}及びLLVM10/clang上\cite{cbcllvm}のCbC実装を用いる。
9 9
10 10
11 \section{CodeGear} 11 \section{CodeGear}
12 CbCでは関数の代わりにCodeGearという単位でプログラミングを行う。 12 CbCでは関数の代わりにCodeGearという単位でプログラミングを行う。
13 CodeGearは通常のCの関数宣言の返り値の型の代わりに\texttt{\_\_code}で宣言を行う。 13 CodeGearは通常のCの関数宣言の返り値の型の代わりに\texttt{\_\_code}で宣言を行う。