changeset 38:c4dbd7b81302

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Thu, 14 Feb 2019 15:53:51 +0900
parents d11c91e8a1fc
children c68174548ae0
files paper/chapter2.tex paper/codes/src/oplabels.h paper/main.pdf
diffstat 3 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter2.tex	Thu Feb 14 15:17:26 2019 +0900
+++ b/paper/chapter2.tex	Thu Feb 14 15:53:51 2019 +0900
@@ -75,3 +75,10 @@
 これは\_CbC\_return及び、 \_CbC\_environmentという変数を使用する。
 この変数は \_CbC\_return が元の環境に戻る際に利用する CodeGear を指し、 \_CbC\_environment は復帰時に戻す元の環境である。
 復帰する場合、 呼び出した位置には帰らず、 呼び出した関数の終了する位置に帰る。
+実際に環境付き継続を利用した場合のサンプルコードをソースコード\ref{cbc_return_src}に示す。
+
+\lstinputlisting[frame=lrbt, label=cbc_return_src, caption=環境付き継続の例]{./codes/src/return.cbc}
+
+この例では、 通常 c\_funcの返り値が-1である為、 変数testには-1が設定されるかの様に見える。
+しかし関数 c\_func内でCodeGearである cgに軽量継続しており、 cgでは環境付きgotoを利用して、 1を返り値としてCの関数に戻る。
+この場合、 呼び出し元 c\_funcの返り値である -1 の代わりに、 環境付きgotoで渡される1が優先され、 変数testには1が代入される。
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/codes/src/oplabels.h	Thu Feb 14 15:53:51 2019 +0900
@@ -0,0 +1,15 @@
+static const void * const LABELS[] = {
+    &&OP_no_op,
+    &&OP_const_i8,
+    &&OP_const_i16,
+    &&OP_const_i32,
+    &&OP_const_i64,
+    &&OP_const_n32,
+    &&OP_const_n64,
+    &&OP_const_s,
+    &&OP_set,
+    &&OP_extend_u8,
+    &&OP_extend_u16,
+    &&OP_extend_u32,
+    &&OP_extend_i8,
+    &&OP_extend_i16,
Binary file paper/main.pdf has changed