Mercurial > hg > Papers > 2019 > anatofuz-thesis
changeset 114:dbb1f18a47a6
update
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 19 Feb 2019 20:21:45 +0900 |
parents | 0bdadb2a7355 |
children | 8e8eff729042 |
files | paper/chapter2.tex paper/chapter4.tex paper/main.pdf |
diffstat | 3 files changed, 4 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/chapter2.tex Tue Feb 19 20:17:27 2019 +0900 +++ b/paper/chapter2.tex Tue Feb 19 20:21:45 2019 +0900 @@ -1,7 +1,7 @@ \chapter{Continuation Based C} \section{CbCの概要} Continuation Based C (CbC) は当研究室で開発を行っているプログラミング言語である。\cite{gcccbc}\cite{llvmcbc} -現在はCコンパイラであるgcc及びllvmをバックエンドとしたclang、 MicroCコンパイラ上の3種類の実装がある。\cite{cbcgcc}\cite{cbcllvm} +現在はCコンパイラであるgcc及びllvmをバックエンドとしたclang、 MicroCコンパイラ上の3種類の実装がある。\cite{cbcgcc}\cite{cbcllvm}\cite{imcbllvm} C言語を用いてプログラミングを行い場合、本来プログラマが行いたい処理の他に、 mallocなどの関数を利用したメモリのアロケートなどのメモリ管理が必要となる。 他にもエラーハンドリングなどの雑多な処理が必要となる。
--- a/paper/chapter4.tex Tue Feb 19 20:17:27 2019 +0900 +++ b/paper/chapter4.tex Tue Feb 19 20:21:45 2019 +0900 @@ -24,7 +24,7 @@ この場合、 入力されたソースコードをバイトコードに変換する実装と、 変換されたバイトコードを評価する仮想機械に処理系が分けられる。 仮想機械はOSのエミュレータではなく、 プロセス仮想マシンと呼ばれるものである。 バイトコードを直接出力できる形式のプログラミング言語にJava、 Javaの仮想機械にJVMが存在する。 -内部的に利用しており直接は出力されない言語に、C言語で実装された MRIと呼ばれるrubyの実装などがあり、 この仮想機械にYARVが存在する。 +内部的に利用しており直接は出力されない言語に、C言語で実装された MRIと呼ばれるrubyの実装などがあり、 この仮想機械にYARVが存在する。\cite{ruby} バイトコードを経由することで、 コンパイルを担当する実装と、 評価を担当する仮想機械の実装に分類する事が可能となり、 それぞれに適した最適化処理が実装可能となる。 また実行する際の速度もバイトコードを経由することで上昇する。 @@ -37,7 +37,7 @@ \end{figure} RakudoではPerl6、 NQPがそれぞれ対象のVMのバイトコードを生成し、 そのバイトコードをVMが実行する。 -バイトコード生成までの処理をフロントエンドと呼び、 バイトコードから評価を行う処理をバックエンドと呼ぶ。 +バイトコード生成までの処理をフロントエンドと呼び、 バイトコードから評価を行う処理をバックエンドと呼ぶ。\cite{rani}\cite{rani1} これらはJavaの様にバイトコードを出力する事も可能であるが、 オプションで指定しない限りは、 rubyなどの様に内部的にのみバイトコードを利用する。 主にRakudoで利用されている仮想機械にC実装のMoarVMがあり、 本研究ではMoarVMのバイトコード評価部分について検討をする。 @@ -149,7 +149,7 @@ \end{figure} 次の命令に移動する際は、 マクロNEXT\_OPを用いてcur\_opを次の命令に移動させ、 opの値を再設定する。 -このopが実行すべき命令の番号が格納されている。 +このopは実行すべき命令の数値である。 opを用いて、ソースコード\ref{labels_list}に示す配列LABELSから、 命令に対応するラベルを取得する。 LABELSはマクロOPが変換したラベルのリストである。 ソースコード\ref{origin_dispatch}の場合、no\_opはopが0が代入され、 const\_i8は1が設定されている。