comparison Paper/anatofuz.tex @ 67:60a15dd5023c

fix abst
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Mon, 19 Nov 2018 16:10:39 +0900
parents e9652ca68bf9
children 96d62f0292d3
comparison
equal deleted inserted replaced
66:e9652ca68bf9 67:60a15dd5023c
71 Perl6はMoarVMと呼ばれるVMを中心としたRakudoと呼ばれる実装が現在の主流となっている. 71 Perl6はMoarVMと呼ばれるVMを中心としたRakudoと呼ばれる実装が現在の主流となっている.
72 Rakudoは処理速度が他のプログラミング言語と比較しても非常に低速である. 72 Rakudoは処理速度が他のプログラミング言語と比較しても非常に低速である.
73 その為, 現在日本国内ではPerl6を実務として利用するケースは概ね存在しない. 73 その為, 現在日本国内ではPerl6を実務として利用するケースは概ね存在しない.
74 Perl6の持つ言語機能や型システムは非常に柔軟かつ強力であるため, 実用的な処理速度に達すれば, 言語の利用件数が向上することが期待される. 74 Perl6の持つ言語機能や型システムは非常に柔軟かつ強力であるため, 実用的な処理速度に達すれば, 言語の利用件数が向上することが期待される.
75 その為本研究では, CbCを用いた言語処理系の実装の一例としてMoarVMをCbCで書き換えたCbCMoarVMを提案する. 75 その為本研究では, CbCを用いた言語処理系の実装の一例としてMoarVMをCbCで書き換えたCbCMoarVMを提案する.
76 本研究はCbCをスクリプト言語の実装に適応した場合, どのような利点やプログラミング上の問題点に遭遇するか, CbCの応用としての側面でも行う. 76
77 CbCをMoarVMの実装として利用した場合, CbCの持つ機能によってMoarVMの高速化を中心とした改良に有益な効果があると推測出来る.
78 また, 現在までのCbCを用いた研究においては言語処理系への応用例が少ない.
79 従って, 本研究はCbCをスクリプト言語の実装に適応した場合, どのような利点やプログラミング上の問題点に遭遇するか, CbCの応用としての側面でも行う.
80 この際にCbCを用いた言語処理系のデバッグを行う際には, CbCを使わずに記述されたオリジナルの言語処理系との並列デバッグが必要となる.
81 従ってMoarVMにCbCを適応した場合, どのようにすれば並列デバッグが行えるかについて述べる.
77 本稿ではまずCbC, Perl6の特徴及び現在の実装について述べ, 本研究で行ったCbCで書き換えたMoarVMについてデバッグ手法も含め解説する. 82 本稿ではまずCbC, Perl6の特徴及び現在の実装について述べ, 本研究で行ったCbCで書き換えたMoarVMについてデバッグ手法も含め解説する.
78 そして本研究で得られたCbCを言語処理系に適応した場合の利点と欠点について述べ, 今後の展望について記載する. 83 そして本研究で得られたCbCを言語処理系に適応した場合の利点と欠点について述べ, 今後の展望について記載する.
79 84
80 \section{CbC} 85 \section{CbC}
81 \subsection{CbCの概要} 86 \subsection{CbCの概要}
403 Interfaceは現在のCbCMoarVMの実装には用いていないが, 今後ThreadedCodeの実装を行うにあたり命令コードディスパッチ箇所に導入を検討している. 408 Interfaceは現在のCbCMoarVMの実装には用いていないが, 今後ThreadedCodeの実装を行うにあたり命令コードディスパッチ箇所に導入を検討している.
404 409
405 \section{MoarVMのデバッグ} 410 \section{MoarVMのデバッグ}
406 411
407 MoarVM自体のデバッグはMoarVMのリポジトリにテストコードが付随していない為単体では実行不可能である. 412 MoarVM自体のデバッグはMoarVMのリポジトリにテストコードが付随していない為単体では実行不可能である.
413 また, CbCを用いて言語処理系の改良時を行った際に言語処理系のデバッグを行う場合は, CbCを用いないオリジナルの処理系との並列デバッグが必要となる.
414 MoarVM自体にはデバッグを支援するツールが存在しない為, MoarVM自体のデバッグ方法や, CbCを用いた処理系との並列デバッグについて独自の手法を利用する必要がある.
408 本研究ではMoarVMのデバッグにおけるCデバッガの使用方法とMoarVMのテスト方法についても示す. 415 本研究ではMoarVMのデバッグにおけるCデバッガの使用方法とMoarVMのテスト方法についても示す.
409 416
410 \subsection{MoarVMのバイトコードのデバッグ} 417 \subsection{MoarVMのバイトコードのデバッグ}
411 MoarVMの実行バイナリであるコマンドmoarに対して, MoarVMのバイトコードをdumpオプションを付けて読み込ませると, MoarVMのバイトコードがアセンブリコードとして出力される. 418 MoarVMの実行バイナリであるコマンドmoarに対して, MoarVMのバイトコードをdumpオプションを付けて読み込ませると, バイトコードがMoarVMによるアセンブリコードとして出力される.
412 しかしこれはMoarVMが実行したバイトコードのトレースではなく, MoarVMのバイトコードを変換したものに過ぎない. 419 しかしこれはMoarVMが実行したバイトコードのトレースではなく, MoarVMのバイトコードを変換したものに過ぎない.
413 また, 明らかに異なる挙動を示すオリジナルのMoarVMと, CbCで書き換えたCbCMoarVM両者のmoarを利用しても同じ結果が返ってきてしまう. 420 また, 明らかに異なる挙動を示すオリジナルのMoarVMと, CbCで書き換えたCbCMoarVM両者のmoarを利用しても同じ結果が返ってきてしまう.
414 そのため今回のMoarVMのバイトコードインタプリタの実装のデバッグにはこの方法は適さない. 421 そのため今回のMoarVMのバイトコードインタプリタの実装のデバッグにはこの方法は適さない.
415 従って実際に実行した命令を確認するにはgdbなどのCデバッガを利用してMoarVMを直接トレースする必要がある. 422 従って実際に実行した命令を確認するにはgdbなどのCデバッガを利用してMoarVMを直接トレースする必要がある.
416 423