changeset 35:6987b8fb2fea

update chapter2
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Wed, 13 Feb 2019 12:57:56 +0900
parents 8b137e2d02bb
children 25ef2b0220df
files paper/chapter2.tex paper/main.pdf
diffstat 2 files changed, 4 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter2.tex	Tue Feb 12 20:45:30 2019 +0900
+++ b/paper/chapter2.tex	Wed Feb 13 12:57:56 2019 +0900
@@ -21,6 +21,9 @@
 CodeGearはC言語の関数宣言の型名の代わりに \_\_codeと書く事で宣言出来る。
 \_\_codeはCbCコンパイラでの扱いはvoidと同じ型として扱うが、 CbCプログラミングではCodeGearである事を示す、 識別子として利用する。
 
+CodeGearは通常のC言語の関数とは異なり、 返り値を持たない。
+そのためreturn文や返り値の型などの情報が存在しない。
+
 CodeGear間の移動はgoto文で行い、 gotoの後に対応するCodeGear名を記述することで遷移する。
 通常C言語の関数呼び出しでは、 スタックポインタを操作し、 ローカル変数や、 レジスタ情報をスタックに保存する。
 これらは通常アセンブラのcall命令として処理される。
@@ -29,8 +32,7 @@
 この際Cの関数呼び出しとは異なり、 プロラムカウンタを操作するのみのjmp命令として処理される。
 通常Schemeのcall/ccなどの継続と呼ばれる処理は、 現在のプログラムまでの位置や情報を、 環境として所持した状態で遷移する。
 CbCの場合これら環境を持たず遷移する為、 通常の継続と比較して軽量であるから、 軽量継続であると言える。
-CbCは軽量継続を利用するためにレジスタレベルでの実装が可能となり、 Cよりも低級な言語と言える。
-
+軽量継続を利用する為、 ループ文を軽量継続の再帰呼び出しなどで実現する事が可能となる。
 
 CodeGear間の入出力の受け渡しは引数を利用して行う。
 
Binary file paper/main.pdf has changed