changeset 61:db9c52b9c219

add detail moarvm problem
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Mon, 19 Nov 2018 14:00:01 +0900
parents 99092907d3ea
children 31637b77c722
files Paper/anatofuz.pdf Paper/anatofuz.tex
diffstat 2 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
Binary file Paper/anatofuz.pdf has changed
--- a/Paper/anatofuz.tex	Mon Nov 19 13:47:44 2018 +0900
+++ b/Paper/anatofuz.tex	Mon Nov 19 14:00:01 2018 +0900
@@ -325,7 +325,10 @@
 \lstinputlisting[label=dispatch_c,  caption=オリジナル版MoarVMのバイトコードディスパッチ]{./src/dispatch.c}
 
 interp.cでは命令コードのディスパッチはマクロを利用したcur\_opの計算及びラベルの遷移, もしくはマクロDISPATCHが展開するswitch文で行われていた.
-CbCMoarVMではこの問題を解決するために, それぞれの命令に対応するCodeGearを作成し, CodeGear名前を要素として持つCbCのCodeGearのテーブルを作成した.
+この為MoarVM内の命令コードに対応する処理は, 命令ディスパッチが書かれているCソースファイルの, 特定の場所のみに記述せざるを得ない.
+その為命令コードのモジュール化などが行えず, 1ファイル辺りの記述量が膨大になってしまう.
+またラベルジャンプもしくはswitch文に展開されてしまう為, 別のCソースファイルからの処理の再利用が出来ない.
+CbCMoarVMではこの問題を解決するために, それぞれの命令に対応するCodeGearを作成し, 各CodeGearの名前を要素として持つCbCのCodeGearのテーブルを作成した.
 このCodeGearのテーブルを参照するCodeGearはcbc\_nextであり, この中のマクロNEXTはinterp.cのマクロNEXTをCbC用に書き直したものである.
 
 \lstinputlisting[label=cbc_dispatch_c,  caption=CbCMoarVMのバイトコードディスパッチ]{./src/cbc-interp-next.cbc}