Mercurial > hg > Papers > 2019 > anatofuz-prosym
changeset 77:ddf88af2253e
update
author | Takahiro SHIMIZU <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 29 Nov 2018 17:19:19 +0900 |
parents | 57547b9cbf5f |
children | 6656f4c3dfa0 |
files | Paper/anatofuz.pdf Paper/anatofuz.tex |
diffstat | 2 files changed, 3 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/Paper/anatofuz.tex Thu Nov 29 17:06:31 2018 +0900 +++ b/Paper/anatofuz.tex Thu Nov 29 17:19:19 2018 +0900 @@ -330,7 +330,6 @@ その為まず比較的CbCで書き換えることが容易な箇所を修正する. 前章までに述べた通りCbCのCodeGearはコンパイラの基本ブロックに該当する. 従ってMoarVMにおける基本ブロックの箇所をCodeGearに書き換える事が可能である. -MoarVMにおける基本ブロックはインタプリタが実行するバイトコードごとの処理に該当する. \subsection{MoarVMのバイトコードのディスパッチ} MoarVMのバイトコードインタプリタはsrc/core/interp.cで定義されている. @@ -347,8 +346,8 @@ 巨大なcase文として実行された場合, 実行時間が遅いだけでなく, ラベル遷移と共存させて記述を行っている為Cのソースコードにおける可読性も低下する. +\lstinputlisting[label=orig_macro, caption=interp.cのマクロ部分]{./src/orig_macro.c} \lstinputlisting[label=oplabelsh, caption=ラベルテーブルの一部分]{./src/oplabels.h} -\lstinputlisting[label=orig_macro, caption=interp.cのマクロ部分]{./src/orig_macro.c} \lstinputlisting[label=dispatch_c, caption=オリジナル版MoarVMのバイトコードディスパッチ]{./src/dispatch.c} @@ -557,10 +556,10 @@ % 100000000 & 3.258 & 124.69 \\ \hline % \end{tabular} % \end{table} -本来処理系は広く使われる為に著名なOSSなどを利用して開発するのが良いが, CbCプロジェクトの認知度が低いという現状がある. +しかし, 言語処理系は広く使われる為に著名なOSSなどを利用して開発するのが望ましいが, CbCプロジェクトの認知度が低いという現状がある. また, 前章までに複数述べた通りCbCコンパイラが現在非常にバグを発生させやすい状態になっている. -CbCコンパイラはgccとllvm/clangに実装している為, これらのアップデートに追従する必要がある. +CbCコンパイラはgccとllvm/clang上に実装している為, これらのアップデートに追従する必要がある. しかしコンパイラのバージョンに応じてCbCで利用するコンパイラ内のAPIが異なる場合が多く, APIの変更に伴う修正作業などを行う必要がある. CbCMoarVMではCからCodeGearへ, CodeGearからCへの遷移などが複数回繰り返されているが, この処理中のCodeGearでのtail callの強制が非常に難関である.