Mercurial > hg > Papers > 2019 > anatofuz-thesis
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で書き換える事が可能となる。