changeset 35:2c8513196d56

...
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 31 Jan 2021 18:05:20 +0900
parents fad87973f26a
children 2db854686b4a
files paper/chapter/02-perl.tex paper/chapter/gears.tex paper/drawio/generate_context.drawio paper/master_paper.pdf
diffstat 4 files changed, 24 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/paper/chapter/02-perl.tex	Sun Jan 31 17:37:28 2021 +0900
+++ b/paper/chapter/02-perl.tex	Sun Jan 31 18:05:20 2021 +0900
@@ -128,6 +128,17 @@
 \texttt{impl2cbc.pl}の処理の概要を図\ref{fig:impl2cbc}に示す。
 
 
+\begin{figure}[hp]
+  \begin{center}
+   \includegraphics[width=130mm]{drawio/impl2cbc.pdf}
+  \end{center}
+  \caption{impl2cbcの処理の流れ}
+  \label{fig:impl2cbc}
+ \end{figure}
+
+\subsection{雛形生成の手法}
+
+
 Interfaceでは入力の引数がImplと揃っている必要があるが、 第一引数は実装自身のインスタンスがくる制約となっている。
 実装自身の型は、Interface定義時には不定である。
 その為、 GearsOSではInterfaceのAPIの宣言時にデフォルト型変数\texttt{Impl}を実装の型として利用する。
@@ -147,6 +158,8 @@
 雛形を生成する場合は、入力として与えられたCodeGearを除外して出力を行う。
 順序はInterfaceをまず出力した後に、 Impl側を出力する。
 
+
+\subsection{コンストラクタの自動生成}
 雛形生成では他にコンストラクタの生成も行う。
 GearsOSのInterfaceのコンストラクタは、 メモリの確保及び各変数の初期化を行う。
 メモリ上に確保するのは主にInterfaceとImplのそれぞれが基本となっている。
@@ -159,14 +172,6 @@
 自動生成機能を作成すると1CbCファイルあたりの記述量が減る利点がある。
 
 
-\begin{figure}[htp]
-  \begin{center}
-   \includegraphics[width=130mm]{drawio/impl2cbc.pdf}
-  \end{center}
-  \caption{impl2cbcの処理の流れ}
-  \label{fig:impl2cbc}
- \end{figure}
-
 
 明示的にコンストラクタが書かれていた場合は、 Perlスクリプト内での自動生成は実行しないように実装した。
 これはオブジェクト指向言語のオーバーライドに相当する機能と言える。
--- a/paper/chapter/gears.tex	Sun Jan 31 17:37:28 2021 +0900
+++ b/paper/chapter/gears.tex	Sun Jan 31 18:05:20 2021 +0900
@@ -6,14 +6,20 @@
 
 \section{GearsOSのビルドシステム}
 GearsOSではビルドツールにCMakeを利用している。
+ビルドフローを図\ref{fig:gearsbuild1}に示す。
 CMakeはautomakeなどのMakeファイルを作成するツールに相当するものである。
 GearsOSでプログラミングする際は、ビルドしたいプロジェクトをCMakeLists.txtに記述する。
 CMakeは自身がコンパイルをすることはなく、ビルドツールであるmakeやninja-buildに処理を移譲している。
 CMakeはmakeやninja-buildが実行可能なMakefile、 build.ninjaの生成までを担当する。
 
-ビルドフローを図\ref{fig:gearsbuild1}に示す。
 
-\begin{figure}[htp]
+GearsOSのビルドでは直接CbCコンパイラがソースコードをコンパイルすることはなく、 間にPerlスクリプトが2種類実行される。
+Perlスクリプトはビルド対象のGearsOSで拡張されたCbCファイルを、純粋なCbCファイルに変換する。
+ほかにGearsOSで動作する例題ごとに必要な初期化関数なども生成する。
+Perlスクリプトで変換されたCbCファイルなどをもとにCbCコンパイラがコンパイルを行う。
+ビルドの処理は自動化されており、 CMake経由でmakeやninjaコマンドを用いてビルドする。
+
+\begin{figure}[hp]
   \begin{center}
    \includegraphics[width=120mm]{drawio/geasflow1.pdf}
   \end{center}
@@ -39,7 +45,7 @@
 
 
 GearsOSはビルドツールにCMakeを利用しているので、 CMakeでクロスコンパイル出来るように工夫をする必要がある。
-ビルドに使用するコンパイラやリンカはCMakeが自動探索し、 決定した上でMakefileやNinjaファイルを生成する。
+ビルドに使用するコンパイラやリンカはCMakeが自動探索し、 決定した上でMakefileやbuild.ninjaファイルを生成する。
 しかしCMakeは今ビルドしようとしている対象が、自分が動作しているアーキテクチャかそうでないか、クロスコンパイラとして使えるかなどはチェックしない。
 つまりCMakeが自動でクロスコンパイル対応のGCCコンパイラを探すことはない。
 その為そのままビルドするとx86用のバイナリが生成されてしまう。
@@ -55,7 +61,7 @@
 \texttt{pmake.pl}を経由してCMakeを実行すると、 makeコマンドに対応するMakefile、 ninja-buildに対応するbuild.ninjaが生成される。
 以降はcmakeではなくmakeなどのビルドツールがビルドを行う。
 
-\begin{figure}[htp]
+\begin{figure}[h]
   \begin{center}
    \includegraphics[width=160mm]{drawio/pmake.pdf}
   \end{center}
--- a/paper/drawio/generate_context.drawio	Sun Jan 31 17:37:28 2021 +0900
+++ b/paper/drawio/generate_context.drawio	Sun Jan 31 18:05:20 2021 +0900
@@ -1,1 +1,1 @@
-<mxfile host="Electron" modified="2021-01-31T06:36:48.983Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.8 Chrome/87.0.4280.88 Electron/11.1.1 Safari/537.36" etag="7gol1OF82dDAk7nHGcjO" version="14.1.8" type="device"><diagram id="R4LYdndaMt07X_-nVjS0" name="ページ1">5Vrfb5swEP5rIm2TGmEIhDx2afdLm1apD12fJhdc8GowM6Yh++tngx0wIR3d6Fi6p+C7M9jf3X13mMycdVK+ZTCLP9EQkZltheXMOZvZNlhYnviRkm0t8X2rFkQMh8qoEVziH0gJtVmBQ5QbhpxSwnFmCgOapijghgwyRjem2S0l5lMzGKE9wWUAyb70Coc8Vruwl438HcJRrJ8MvFWtSaA2VjvJYxjSTUvknM+cNaOU11dJuUZEgqdxqee9OaDdLYyhlA+ZcHXyZQvcK+dTci/8RG3r7OuHE6Dck/Ot3jEKBQBqSBmPaURTSM4b6WtGizRE8raWGDU2HynNhBAI4TfE+VZ5ExacClHME6K0qMT8i5w+d9XouqU5K9Wdq8G2NbhADCeII6Zkt5iQNSWUVSt3HMeywKmQ55zRu52/HCGpdym3dhA9JcppwQL0AGSOikLIIsQfgtbeOVlkB6Ji4WwrJjJEIMf35kKgCtNoZ6emnjIGty2DjOKU5607X0iBMFAZZ3sq3FS+Od2oeJy9uKhXoEetrTSiKtIeEXUKwntICgXDXhSKbMnkZUq5DLlNjDm6zGDlmY2gGjOgbmBwF1Vh+bngBKdIyUPI7j6LWZhXYTS33F0s3CPGUflwNOw7T0+wTdSARnHTcATQFBa3+UEb9jm8BfrjMbWPHdNVB9LV5JCCHkg9wiXx0CqHGmy97wXVipO84r1TYQD8rGyU4iqSvxcFQ0K5vlnLioTFLdRtb5g2efFqHmipWHv9vFr18sj8ujT9ajuT+3Vx7KniuB1MJ4fUPXpIO4zuTg4pWEzamrUas10vJrGSKLRas5Xu4Lq9mcCdbVtNnhxet3VNm1eNdJ83rKdbjNvTeX+rp/ujiPAO1qM8g+nv16P3qXDbrczEB8pR/HJf3KpQ9Qq0+LhS3zJTf/rGY3n8bOoakDrT06l/7Jjaqw6m/uSYAvdZligwSoka+dhhdRQlavVUJSrJyP9ZneylmfaL6Zt9/bTRvRwII1Tyefw8XOf/e6++YDklY+vr61n77PfAee+OnI23h7nrOb+g52rU5fp9bj7E4iHM42qzYFwCB/ZQBrf6o+rvMDhY/SsR8ovvATo+TkTCeotOkPxOiBiOHx4vk4SIP2mI9J01j3EwGqEUMcjRV10IZNHvPQTdj1FCcJYPKAIwz+rvhLe4lN4eg+jdxQCi9/uI3n8you973xmjRqO0SA53YlK7piFqSnijlLozyOEzbtb8zte0hTV5xbcPN2tDk1Ug0BMIOM0KPjQ9ZTabrqkJVhNqSqVvDI5VIkhwlIphgNKKql9LB+EAklOlSHAYkkOxYBamETzsdFO97y3c6/Gw/WQO/nM27ncwLfj/6OElGEDmI3lYDJs/gNRf15u/0TjnPwE=</diagram></mxfile>
\ No newline at end of file
+<mxfile host="Electron" modified="2021-01-31T08:53:02.673Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/14.1.8 Chrome/87.0.4280.88 Electron/11.1.1 Safari/537.36" etag="LESJmukIUig-juxDMBkA" version="14.1.8" type="device"><diagram id="R4LYdndaMt07X_-nVjS0" name="ページ1">5Vrfb5swEP5rIm2TGmEIhDx2afdLm1apD12fJhdc8GowM6Yh++tngx0wIR3d6Fi6p+C7M9jf3X13mMycdVK+ZTCLP9EQkZltheXMOZvZNlhYnviRkm0t8X2rFkQMh8qoEVziH0gJtVmBQ5QbhpxSwnFmCgOapijghgwyRjem2S0l5lMzGKE9wWUAyb70Coc8Vruwl438HcJRrJ8MvFWtSaA2VjvJYxjSTUvknM+cNaOU11dJuUZEgqdxqee9OaDdLYyhlA+ZcHXyZQvcK+dTci/8RG3r7OuHE6Dck/Ot3jEKBQBqSBmPaURTSM4b6WtGizRE8raWGDU2HynNhBAI4TfE+VZ5ExacClHME6K0qMT8i5w+d9XouqU5K9Wdq8G2NbhADCeII6Zkt5iQNSWUVSt3HMeywKmQ55zRu52/HCGpdym3dhA9JcppwQL0AGSOikLIIsQfgtbeOVlkB6Ji4WwrJjJEIMf35kKgCtNoZ6emnjIGty2DjOKU5607X0iBMFAZZ3sq3FS+Od2oeJy9uKhXoEetrTSiKtIeEXUKwntICgXDXhSKbMnkZUq5DLlNjDm6zGDlmY2gGjOgbmBwF1Vh+bngBKdIyUPI7j6LWZhXYTS33F0s3CPGUflwNOw7T0+wTdSARnHTcATQFBa3+UEb9jm8BfrjMbWPHdNVB9LV5JCCHkg9wiXx0CqHGmy97wXVipO84r1TYQD8rGyU4iqSvxcFQ0K5vlnLioTFLdRtb5g2efFqHmipWHv9vFr18sj8ujT9ajuT+3Vx7KniuB1MJ4fUPXpIO4zuTg4pWEzamrUas10vJrGSKLRas5Xu4Lq9mcCdbVtNnhxet3VNm1eNdJ83rKdbjNvTeX+rp/ujiPAO1qM8g+nv16P3qXDbrczEB8pR/HJf3KpQ9Qq0+LhS3zJTf/rGY3n8bOoakDrT06l/7Jjaqw6m/uSYAvdZligwSoka+dhhdRQlavVUJSrJyP9ZneylmfaL6Zt9/bTRvRwII1Tyefw8XOf/e6++YDklY+vr61n77PfAee+OnI23h7nrOb+g52rU5fp9bj7E4iHM42qzYFwCB/ZQBrf6o+rvMDhY/SsR8ovvATo+TkTCeotOkPxOiBiOHx4vk4SIP2mI9J01j3EwGqEUMcjRV10IZNHvPQTdj1FCcJYPKAIwz+rvhLe4lN4eg+jdxQCi9/uI3n8you973xmjRqO0SA53YlK7piFqSnijlLozyOEzbtb8zte0hTV5xbcPN2tDk1Ug0BMIOM0KPjQ9ZTabrqkJVhNqSqVvDI5VIkhwlIphgNKKql9LB+EAklOlSHAYkkOxYBamETzsdFO97y3c6/Gw/WQO/nM27ncwLfj/6OElGEDmI3lYDJs/gNRf15u/0TjnPwE=</diagram></mxfile>
\ No newline at end of file
Binary file paper/master_paper.pdf has changed