changeset 83:0c012cbdf385

update
author Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 30 Nov 2018 21:02:11 +0900
parents beac24e25a1f
children 6c69fdd1716c
files Paper/anatofuz.pdf Paper/anatofuz.tex Paper/fig/tgraph.pdf
diffstat 3 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
Binary file Paper/anatofuz.pdf has changed
--- a/Paper/anatofuz.tex	Fri Nov 30 20:26:57 2018 +0900
+++ b/Paper/anatofuz.tex	Fri Nov 30 21:02:11 2018 +0900
@@ -408,19 +408,19 @@
 
 \lstinputlisting[label=cbcoplabelsh,  caption=CodeGear配列の一部分]{./src/oplables-cbc-codes.h}
 
-Code\ref{cbc_codesegs_c}に示す, 命令の実行処理でMoarVMのレジスタであるreg\_baseや命令列cur\_opなどの情報を利用しているが, これらはMVM\_interp\_run内のローカル変数として利用している.
+Code\ref{cbc_codesegs_c}に示す命令の実行処理でMoarVMのレジスタであるreg\_baseや, 命令列cur\_opなどの情報を利用しているが, これらはMVM\_interp\_run内のローカル変数として利用している.
 ラベルを利用しているオリジナル版では同一関数内であるためアクセス可能であるが, CodeGear間の移動で命令を表現するCbCではアクセスできない.
 その為Code\ref{interp}に示す様に, インタプリタの情報を集約した構造体interを定義する.
 この構造体へのポインタであるINTERP型の変数iをCodeGearの入出力として与える.
 CodeGear内ではINTERPを経由することでインタプリタの各種情報にアクセスする.
 CodeGear間の遷移ではレジスタの値の調整は行われない為, 入力引数を使ってレジスタマッピングを管理できる.
-その為INTERPのメンバであるMoarVMのレジスタそのものをアーキテクチャのレジスタ上に乗せる事が可能である.
+INTERPのメンバであるMoarVMのレジスタそのものをアーキテクチャのレジスタ上に乗せる事が可能となる.
 
 命令実行中のCodeGearの遷移を図\ref{fig:perl6cbcinter}に示す.
 この中で実線で書かれている部分はCbCのgoto文で遷移し, 波線の箇所は通常のCの関数呼び出しとなっている.
 
 現在のCbCMoarVMは次の命令セットのディスパッチをcbc\_nextが行っている.
-その為cbc\_nextから命令コードに対応するCodeGearに継続し, CodeGearからcbc\_nextに継続するサイクルが基本の流れである.
+cbc\_nextから命令コードに対応するCodeGearに継続し, CodeGearからcbc\_nextに継続するサイクルが基本の流れである.
 CodeGear内からCの関数は問題なく呼ぶ事が可能であるため, Cの関数を利用する処理は変更せず記述する事ができる.
 また変換対象はswitch文であるため, breakせず次のcaseに移行した場合に対応するように別のCodeGearに継続し,その後cbc\_nextに継続するパターンも存在する.
 
Binary file Paper/fig/tgraph.pdf has changed