changeset 76:582b97946af6

updare prepaper
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Mon, 18 Feb 2019 18:37:18 +0900
parents 29bb4dca94ea
children 2327c951dfb9
files prepaper/finalpre.pdf prepaper/finalpre.tex
diffstat 2 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
Binary file prepaper/finalpre.pdf has changed
--- a/prepaper/finalpre.tex	Mon Feb 18 18:09:00 2019 +0900
+++ b/prepaper/finalpre.tex	Mon Feb 18 18:37:18 2019 +0900
@@ -128,10 +128,9 @@
 進めた後にcase文の先頭もしくはCのラベルジャンプを利用して次の処理に遷移する。
 この一連の処理を命令コードのディスパッチと呼ぶ。
 命令コードの実行の中では、 現在のMoarVMのレジスタであるreg\_baseやスレッドごとの環境である構造体tcなどを参照する。
-この方法の問題点として、 巨大なcase文になっている為命令列の分割が出来ない。
-ディスパッチ部分の処理が都度走る為低速になる。
-Cファイルでの可読性とモジュール化が損なわれてしまう。
-ラベルにbreak pointを設定できない為デバッグし辛いなどが挙げられる。
+この方法の問題点として、 巨大なcase文に変換されてしまう事から、 命令に対応する処理のモジュール化が出来ない。
+ディスパッチ部分の処理が都度走る為に、 低速になる。
+ラベルにbreak pointを設定できない為に、 デバッグし辛いなどが挙げられる。
 \lstinputlisting[label=origdis,  caption=MoarVM内のインタプリタのディスパッチ]{src/dispatch.c}
 
 \section{CbCMoarVMのディスパッチ}
@@ -160,6 +159,9 @@
 またラベルにはbreak pointを設定する事が出来なかったが、 CodeGearはデバッガからは関数として見る事ができるため通常のCの関数の様にbreak pointを設定する事が可能である。
 
 
+現在はMoarVMを利用しNQP, Perl6のビルドが達成出来た。
+またテストコードも、 元のMoarVMと同様の達成率を得た。
+処理速度は再帰呼び出しなどを行っている例題では、 オリジナルのMoarVMより低速であるが、単純ループなど、 命令がCPUのキャッシュに残る場合は高速に動く事が測定された。
 
 \section{今後の課題}
 本研究では、 MoarVM の命令ディスパッチ部分がCodeGearの集合に変換可能である事を示した。