# HG changeset patch # User anatofuz # Date 1550470464 -32400 # Node ID 7955d5a147bd6b4b67081ef3dfef10f44dddcb92 # Parent 5ec812f6e3d6b93c1a699c29f6ce4c4e9fb8f611 update diff -r 5ec812f6e3d6 -r 7955d5a147bd paper/chapter5.tex --- a/paper/chapter5.tex Mon Feb 18 11:51:48 2019 +0900 +++ b/paper/chapter5.tex Mon Feb 18 15:14:24 2019 +0900 @@ -11,7 +11,17 @@ そのため、 命令処理部分を別ファイルに書き出すなどのモジュール化が可能となった。 \section{CbCMoarVMのデバッグ} -前章でCbCMoarVMはCodeGearに直接break pointを設定出来る事を示した。 +主要なデバッガであるgdbやlldbでは、 関数には直接break pointを設定する事が可能である。 +MoarVMのバイトコードディスパッチ部分はcase文やラベルgotoに変換され、 関数として扱う事が出来ない。 +その為、 命令に対応する処理部分でbreak pointを設定を行う場合、 まず処理が書かれているMVM\_interp\_run関数にbreak pointを設置する必要がある。 +プロセス起動後、 関数が書かれているinterp.cファイル中の行番号を指定してbreak pointを付けなければならない。 +また、ディスパッチでは数値又はラベルを利用している為、 デバッガ上で直接どの命令を実行するか確認をする事が困難である。 + + +CodeGearは関数として扱う事ができる為、 break pointとして直接設定する事が可能である。 +また、 gdbなどのデバッガは、 実行するべき関数名を表示する事が可能であるため、 CodeGearの名前も表示可能である。 +CodeGear名は命令と対応している為、 CodeGear名から命令名を推測する事が可能となった。 + \section{パフォーマンス} \section{Threaded Code} diff -r 5ec812f6e3d6 -r 7955d5a147bd paper/main.pdf Binary file paper/main.pdf has changed