changeset 11:40d78be47ea6

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Thu, 07 Feb 2019 15:50:25 +0900
parents b01cd68cfd68
children 0f68f2558ea1
files paper/chapter1.tex
diffstat 1 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter1.tex	Mon Feb 04 19:08:59 2019 +0900
+++ b/paper/chapter1.tex	Thu Feb 07 15:50:25 2019 +0900
@@ -11,12 +11,23 @@
 Perl6は設計と実装が分離しており、 現在の主要な実装はRakudoと呼ばれている。
 RakudoはPerl6のサブセットである、NQPと呼ばれる言語を中心に、 記述されている。
 NQP自体はプロセス仮想機械と呼ばれる、 言語処理系の仮想機械で実行される。
-Rakudoの場合は、 Perl6専用の処理系であるMoarVM、 Java環境のJVMが選択可能である。
+Rakudoの場合実行する仮想機械は、 Perl6専用の処理系であるMoarVM、 Java環境のJVMが選択可能である。
 
 Rakudoはインタプリタの起動時間及び、 全体的な処理時間が他のスクリプト言語と比較して、 非常に低速である。
 また、 実行環境であるMoarVMの実装事態も複雑であり、 巨大なcase文が利用されているなど、 見通しが悪くなっている。
 
-この問題を解決する為に、 当研究室で開発しているContinuation Based C (CbC) を用いる。
+当研究室で開発しているプログラミング言語に、 Continuation Based C (CbC) がある。
+CbCはCと互換性のある言語であり、 関数より細かな単位である、 CodeGearを用いて記述することが可能となる。
+CbCでは各CodeGear間の移動に、 環境などを保存せず次の状態に移動する軽量継続を用いている。
+軽量継続を用いる事が可能である為、 C言語におけるループや関数呼び出しを排除する事が可能となる。
+
+
+現在までのCbCを用いた研究においては、 CbCの言語処理系への応用例が少ない。
+スクリプト言語処理系では、 バイトコードから実行するべき命令のディスパッチの際にswitch分やgcc拡張のラベルgotoなどを利用している。
+これらは通常巨大なswitch-case文となり、特定のCファイルに記述せざるを得なくなる。
+CbCの場合、 このcase文相当のCondeGearを生成する事が可能である為、 スクリプト言語処理系の記述に適していると考えられる。
+
+
 MoarVMはC言語で記述されており、 Cと互換性のある言語であれば拡張する事が可能となる。
 CbCはCと互換性のある言語である為、 MoarVMの一部記述をCbCで書き換える事が可能となる。