changeset 45:78ac3e7ec7ea

update
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 15 Feb 2019 14:54:34 +0900
parents bbf886a770fa
children 1d637bad458d
files paper/chapter4.tex paper/fig/bytecode_segment.graffle paper/fig/bytecode_segment.pdf paper/main.pdf
diffstat 4 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter4.tex	Fri Feb 15 14:05:22 2019 +0900
+++ b/paper/chapter4.tex	Fri Feb 15 14:54:34 2019 +0900
@@ -49,11 +49,11 @@
 書き換えを行うにあたり、 MoarVMのオリジナルの箇所の実装を確認する。
 今回対象とするMoarVMのバージョンは2018.04.01である。
 
-MoarVMのバイトコードインタプリタはsrc/core/interp.c中の関数 MVM\_interp\_runで定義されている。
-この関数ではMoarVMのバイトコードの中の、 命令に対応するバイトコードを解釈する。
+MoarVMのバイトコードは、 フォーマットが決まっており、 複数の意味のあるバイトコードの集合となっている。
+今回は、MoarVMの命令を実行する際に必要な、 命令コードに対応するバイトコードの部分に着目する。
+これは、 今回書き換えを検討するMoarVMバイトコードインタプリタが読み込み、 評価するバイトコードの部分が、 命令コードバイトコードに対応する為である。
 MoarVMのバイトコードの中の、 命令に対応するバイトコードの構成を図\ref{fig:bytecode_segment}に示す。
 
-
 \begin{figure}[ht]
 \caption{MoarVMの命令バイトコード}
  \begin{center}
@@ -62,6 +62,14 @@
  \label{fig:bytecode_segment}
 \end{figure}
 
+
+MoarVMの命令バイトコードは16ビットである。上位8ビットが、 対象となる命令を示す。
+下位8ビットは、その命令の中で利用されるレジスタや、型情報が入るオペランドとなっている。
+MoarVMの命令は0から127番までが、 MoarVMのコア機能となっており、 128から255番までが、 拡張可能な命令セットとなっている。
+
+
+MoarVMのバイトコードインタプリタはsrc/core/interp.c中の関数 MVM\_interp\_runで定義されている。
+この関数ではMoarVMのバイトコードの中の、 命令に対応するバイトコードを解釈する。
 関数内では、 解釈するべきバイトコード列が格納されている変数 cur\_op や、現在と次の命令を指し示すop、 命令に対して受け渡す現在のVM情報であるThreadContex tcなどが変数として利用されている。
 実際に命令ディスパッチを行っている箇所の一部をソースコード\ref{origin_dispatch}に示す。
 
Binary file paper/fig/bytecode_segment.graffle has changed
Binary file paper/fig/bytecode_segment.pdf has changed
Binary file paper/main.pdf has changed