Mercurial > hg > Papers > 2021 > anatofuz-master
changeset 9:6e33e74d378f
...
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jan 2021 21:00:50 +0900 |
parents | 4eb9702d1ed7 |
children | 86c42a4c8a0d |
files | paper/chapter/02-perl.tex paper/master_paper.pdf |
diffstat | 2 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/chapter/02-perl.tex Tue Jan 26 16:44:45 2021 +0900 +++ b/paper/chapter/02-perl.tex Tue Jan 26 21:00:50 2021 +0900 @@ -27,7 +27,7 @@ 現在のGearsOSでは、 CMakeによるコンパイル時にPerlで記述された\texttt{generate\_stub.pl}と\texttt{generate\_context.pl}の2種類のスクリプトで変換される。 -\section{GearsCbCの雛形生成} +\section{GearsCbCのInterfaceの実装時の問題} Interfaceとそれを実装するImplの型が決定すると、最低限満たすべきCodeGearのAPIは一意に決定する。 ここで満たすべきCodeGearは、Interfaceで定義したCodeGearと、 Impl側で定義した privateなCodeGearとなる。 @@ -49,6 +49,7 @@ またCbCコンパイラレベルで検知できても、すでに変換されたコード側でエラーが出てしまうので、トランスコンパイラの挙動をトレースしながらデバッグをする必要がある。 Interfaceの実装が不十分であることのエラーは、 GearsOSレベル、最低でもCbCコンパイラのレベルで完全に検知したい。 +\section{Interfaceを満たすコード生成の他言語の対応状況} Interfaceを機能として所持している言語の場合、これらはコンパイルレベルか実行時レベルで検知される。 例えばJavaの場合はInterfaceを満たしていない場合はコンパイルエラーになる。 @@ -69,6 +70,8 @@ 主要なエディタであるvscodeのgolangの公式パッケージである\texttt{vscode-go}\cite{vscode-go}でも導入されており、 vscodeから呼び出すことが可能である。 vscode以外にもvimなどのエディタから呼び出すことや、 シェル上で呼び出して標準出力の結果を利用することが可能である。 +\section{GearsOSでのInterfaceを満たすCbCの雛形生成} + GearsOSでも同様のプログラマ支援ツールを導入したい。 LanguageServerの導入も考えられるが、 今回の場合はC言語のLanguageServerをCbC用にまず改良し、 さらにGearsOS用に書き換える必要がある。 @@ -102,6 +105,12 @@ 雛形生成では他にコンストラクタの生成も行う。 +GearsOSのInterfaceのコンストラクタは、 メモリの確保及び各変数の初期化を行う。 +メモリ上に確保するのは主にInterfaceとImplのそれぞれが基本となっている。 +Interfaceによっては別のDataGearを内包しているものがある。 +その場合は別のDataGearの初期化もコンストラクタ内で行う必要があるが、 自動生成コマンドではそこまでの解析は行わない。 + + コンストラクタはデフォルトでは変数は0、またはNULLで初期化される。 このスクリプトで生成されたコンストラクタは\texttt{generate\_stub.pl}内でも自動的に生成することが可能である。 そのため、 オーバーライドする必要がない場合は削除しても問題なく動作するようになっている。