Mercurial > hg > Papers > 2021 > anatofuz-master
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}を各実装の型に置換することで自動生成が可能となる。
--- 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{指導教員:教授 和田 知久}