# HG changeset patch # User Takahiro SHIMIZU # Date 1542611439 -32400 # Node ID 60a15dd5023cc490d897c27706b961dd9e8717af # Parent e9652ca68bf934f939caf62a1a87b8587341606d fix abst diff -r e9652ca68bf9 -r 60a15dd5023c Paper/anatofuz.pdf Binary file Paper/anatofuz.pdf has changed diff -r e9652ca68bf9 -r 60a15dd5023c Paper/anatofuz.tex --- a/Paper/anatofuz.tex Mon Nov 19 15:36:21 2018 +0900 +++ b/Paper/anatofuz.tex Mon Nov 19 16:10:39 2018 +0900 @@ -73,7 +73,12 @@ その為, 現在日本国内ではPerl6を実務として利用するケースは概ね存在しない. Perl6の持つ言語機能や型システムは非常に柔軟かつ強力であるため, 実用的な処理速度に達すれば, 言語の利用件数が向上することが期待される. その為本研究では, CbCを用いた言語処理系の実装の一例としてMoarVMをCbCで書き換えたCbCMoarVMを提案する. -本研究はCbCをスクリプト言語の実装に適応した場合, どのような利点やプログラミング上の問題点に遭遇するか, CbCの応用としての側面でも行う. + +CbCをMoarVMの実装として利用した場合, CbCの持つ機能によってMoarVMの高速化を中心とした改良に有益な効果があると推測出来る. +また, 現在までのCbCを用いた研究においては言語処理系への応用例が少ない. +従って, 本研究はCbCをスクリプト言語の実装に適応した場合, どのような利点やプログラミング上の問題点に遭遇するか, CbCの応用としての側面でも行う. +この際にCbCを用いた言語処理系のデバッグを行う際には, CbCを使わずに記述されたオリジナルの言語処理系との並列デバッグが必要となる. +従ってMoarVMにCbCを適応した場合, どのようにすれば並列デバッグが行えるかについて述べる. 本稿ではまずCbC, Perl6の特徴及び現在の実装について述べ, 本研究で行ったCbCで書き換えたMoarVMについてデバッグ手法も含め解説する. そして本研究で得られたCbCを言語処理系に適応した場合の利点と欠点について述べ, 今後の展望について記載する. @@ -405,10 +410,12 @@ \section{MoarVMのデバッグ} MoarVM自体のデバッグはMoarVMのリポジトリにテストコードが付随していない為単体では実行不可能である. +また, CbCを用いて言語処理系の改良時を行った際に言語処理系のデバッグを行う場合は, CbCを用いないオリジナルの処理系との並列デバッグが必要となる. +MoarVM自体にはデバッグを支援するツールが存在しない為, MoarVM自体のデバッグ方法や, CbCを用いた処理系との並列デバッグについて独自の手法を利用する必要がある. 本研究ではMoarVMのデバッグにおけるCデバッガの使用方法とMoarVMのテスト方法についても示す. \subsection{MoarVMのバイトコードのデバッグ} -MoarVMの実行バイナリであるコマンドmoarに対して, MoarVMのバイトコードをdumpオプションを付けて読み込ませると, MoarVMのバイトコードがアセンブリコードとして出力される. +MoarVMの実行バイナリであるコマンドmoarに対して, MoarVMのバイトコードをdumpオプションを付けて読み込ませると, バイトコードがMoarVMによるアセンブリコードとして出力される. しかしこれはMoarVMが実行したバイトコードのトレースではなく, MoarVMのバイトコードを変換したものに過ぎない. また, 明らかに異なる挙動を示すオリジナルのMoarVMと, CbCで書き換えたCbCMoarVM両者のmoarを利用しても同じ結果が返ってきてしまう. そのため今回のMoarVMのバイトコードインタプリタの実装のデバッグにはこの方法は適さない.