changeset 4:c08f0523495d

...
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Mon, 25 Jan 2021 15:10:37 +0900
parents 63f209dbaa73
children cccd10b7a2dd
files paper/chapter/02-perl.tex paper/master_paper.pdf paper/master_paper.tex
diffstat 3 files changed, 22 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter/02-perl.tex	Mon Jan 25 14:52:56 2021 +0900
+++ b/paper/chapter/02-perl.tex	Mon Jan 25 15:10:37 2021 +0900
@@ -1,4 +1,15 @@
-\chapter{GearsOSのトランコンパイラ}
+\chapter{GearsOSのトランスコンパイラ}
+
+GearsOSはCbCで実装を行う。
+CbCはC言語よりアセンブラに近い言語であるため、 すべてを純粋なCbCで記述しようとすると記述量が膨大になってしまう。
+またノーマルレベルの計算とメタレベルの計算を、全てプログラマが記述する必要が発生してしまう。
+メタ計算では値の取り出しなどを行うが、 これはノーマルレベルのCodeGearのAPIが決まれば一意に決定される。
+したがってノーマルレベルのみ記述すれば、 機械的にメタ部分の処理は概ね生成可能となる。
+また、メタレベルのみ切り替えたいなどの状況が存在する。
+ノーマルレベル、メタレベル共に同じコードの場合は記述の変更量が膨大であるが、 メタレベルの作成を分離するとこの問題は解消される。
+
+GearsOSではメタレベルの処理の作成にPerlスクリプトを用いており、 ノーマルレベルで記述されたCbCから、 メタ部分を含むCbCへと変換する。
+変換前のCbCをGearsCbCと呼ぶ。
 
 \section{GearsCbCの雛形生成}
 
@@ -33,5 +44,11 @@
 主要なエディタであるvscodeのgolangの公式パッケージである\texttt{vscode-go}\cite{vscode-go}でも導入されており、 vscodeから呼び出すことが可能である。
 
 
+GearsOSでも同様のプログラマ支援ツールを導入したい。
+先行事例を参考に、エディタ上より呼び出すか、 またはコマンドを実行して雛形ファイルを生成する機能をGearsOSに導入した。
+
+
 Interfaceでは入力の引数がImplと揃っている必要があるが、 第一引数は実装自身のインスタンスがくる制約となっている。
-そのためInterfaceでデフォルト型\texttt{Impl}を各実装の型に置換することで自動生成が可能となる。
+実装自身の型は、Interface定義時には不定である。
+その為、 GearsOSではInterfaceのAPIの宣言時にデフォルト型変数\texttt{Impl}を実装の型として利用する。
+デフォルト型\texttt{Impl}を各実装の型に置換することで自動生成が可能となる。
Binary file paper/master_paper.pdf has changed
--- a/paper/master_paper.tex	Mon Jan 25 14:52:56 2021 +0900
+++ b/paper/master_paper.tex	Mon Jan 25 15:10:37 2021 +0900
@@ -12,10 +12,10 @@
 
 %\input{dummy.tex} %% font
 
-\jtitle{修士論文のテンプレート}
+\jtitle{GearsOSのメタ計算}
 \etitle{} %
-\year{2020年 3月}
-\eyear{March 2020}
+\year{2021年 3月}
+\eyear{March 2021}
 \author{清水 隆博}
 \eauthor{Takahiro Shimizu}
 \chife{指導教員:教授 和田 知久}