Mercurial > hg > Papers > 2019 > anatofuz-thesis
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}