diff paper/chapter/02-perl.tex @ 4:c08f0523495d

...
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Mon, 25 Jan 2021 15:10:37 +0900
parents e543ba9a8e5c
children 9ba5f87255e0
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}を各実装の型に置換することで自動生成が可能となる。