changeset 62:88a3fb5e5b18

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 17 Feb 2019 19:55:58 +0900
parents efe90261de01
children 71c44ceda013
files paper/chapter4.tex paper/main.pdf
diffstat 2 files changed, 5 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter4.tex	Sun Feb 17 17:56:51 2019 +0900
+++ b/paper/chapter4.tex	Sun Feb 17 19:55:58 2019 +0900
@@ -264,10 +264,12 @@
 
 
 \section{CbCMoarVMのデバッグ}
+CbCMoarVMが正常にバイトコードを実行しているかどうかは、 正常に動くオリジナルのMoarVMと、 実行したバイトコードの差分を検知することで確認する事が可能である。
+入力として与えたスクリプトは常に同じバイトコードに変換されると考えられるが、 MoarVMはバイトコードにUUIDの様な物を埋め込んでしまう為、 同じファイルを与えても生成されるバイトコードが異なってしまう。
+その為、 NQPインタプリタのREPLの様な機能を使い、 それぞれのVMが同じ命令から処理を開始する様に調整する。
 
-従って、 テストコードを利用するのではなく、 オリジナルのMoarVMで動くべき命令と、 実際にCbCMoarVMで動いている命令がどう違うかを確認する。
-
-
+差分は、 バイトコードインタプリタのMVM\_interp\_runのソースコード中で、 次の命令を計算する箇所で、 命令に対応する数値を出力する様に付け加える。
+その出力を、 gdbなどのデバッガとscriptコマンドなどを用いてログを取り、 perlなどのスクリプトを用いて解析する。
 実際に差分を確認したスクリプトの実行結果の一部を、 ソースコード\ref{cbc_origin_diff}に示す。
 
 \lstinputlisting[frame=lrbt, label=cbc_origin_diff, caption=MoarVMとCbCMoarVMの実行命令の差分検知]{./codes/diff.txt}
Binary file paper/main.pdf has changed