Mercurial > hg > Papers > 2019 > anatofuz-midterm
changeset 6:2964605b812f
mv semgent gear
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 09 Nov 2018 22:20:47 +0900 |
parents | 97ca0612ce5b |
children | 5c8e88841a30 |
files | mid_thesis.pdf mid_thesis.tex |
diffstat | 2 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mid_thesis.tex Fri Nov 09 22:14:45 2018 +0900 +++ b/mid_thesis.tex Fri Nov 09 22:20:47 2018 +0900 @@ -67,7 +67,7 @@ \section{CbC} Perl6処理系の改良にはgccとLLVM/Clang上に実装したContinuation based C(CbC)を用いる. CbCはCodeGearを基本的な処理単位とし,CodeGearの遷移でプログラムを記述するCの下位言語である. -CodeSegmentの宣言は\_\_codeという型を持つ関数として宣言する. +CodeGearの宣言は\_\_codeという型を持つ関数として宣言する. ただしこの関数は\_\_codeという型を返すわけではなく,CodeGearである事を示す指示子のような役割である. CodeGearはCの関数とは異なり返り値を持たず,呼び差し元の関数に戻る代わりに別のCodeGearへ遷移する. CbCにおけるCodeGear間の継続はスタックに値を積まず,環境も遷移時に持たない為軽量継続と呼ぶ. @@ -151,8 +151,8 @@ オリジナルのMoarVMとは異なり,同一関数上で実行する訳では無い為,MVM\_interp\_runで定義している局所変数のレジスタreg\_baseなどにアクセスすることは通常では出来ない. -その為CodeSegmentの遷移において,これら必要なインタプリタの情報を纏めた構造体INTERを宣言し,このポインタであるINTERPを引数として入力する. -各CodeSegmentではこのINTERPを経由することでレジスタ情報などにアクセスする. +その為CodeGearの遷移において,これら必要なインタプリタの情報を纏めた構造体INTERを宣言し,このポインタであるINTERPを引数として入力する. +各CodeGearではこのINTERPを経由することでレジスタ情報などにアクセスする. この方法の利点としてCodeGearは単なる関数として扱える為,元のソースコードの様に同一ファイル内に全ての処理を書く必要がない. またラベルにはbreak pointを設定する事が出来なかったが,CodeGearはデバッガからは関数として見る事ができるため通常のCの関数の様にbreak pointを設定する事が可能である.