Mercurial > hg > Papers > 2021 > anatofuz-master
changeset 108:23f9d8c6d014
...
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 06 Feb 2021 14:09:32 +0900 |
parents | 84359208ad70 |
children | 198088f668cd |
files | paper/chapter/05-perl.tex paper/chapter/history.tex paper/master_paper.pdf paper/src/queueTree.pl |
diffstat | 4 files changed, 48 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/chapter/05-perl.tex Sat Feb 06 13:47:49 2021 +0900 +++ b/paper/chapter/05-perl.tex Sat Feb 06 14:09:32 2021 +0900 @@ -134,6 +134,12 @@ ヘッダファイルがあった場合、 Gears::InterfaceのAPIを利用して、 InterfaceもしくはImplのファイルとして利用可能であるかを確認する。 Interface、Implファイルでなかった場合は、ただの構造体であるのでcontext.hに含む情報からは除外する。 +収集されたDataGearはソースコード\ref{src:queueTree}に示すPerlの連想配列に変換される。 +連想配列は、最初のキーがInterfaceの名前であり、 Implementがある場合はInterfaceに対応する値のvalueに、implという連想配列が入れ子で入っている。 +この中にInterfaceを実装しているImplの型情報が記録されている。 + + +\lstinputlisting[label=src:queueTree, caption=context.hに出力するDataGearの集合]{src/queueTree.pl} \begin{figure}[htbp] \begin{center} @@ -143,19 +149,16 @@ \label{fig:generate_context_3} \end{figure} - - +\subsection{Interface定義のincludeファイルの解決} \subsection{context.hのテンプレートファイル} Perlのモジュールとして\texttt{Gears::Template::Context}を作製した。 -xv6プロジェクトの場合は一部ヘッダファイルに含める情報が異なる。 - -派生モジュールとして\texttt{Gears::Template::Context::XV6}も実装した。 +xv6プロジェクトの場合は一部ヘッダファイルに含める情報が異なるため、 xv6のビルド用にサブモジュールとして\texttt{Gears::Template::Context::XV6}も実装した。 これらのテンプレートモジュールはgenerate\_context.plの実行時のオプションで選択可能である。 呼び出しにはPerlの動的モジュールロード機能を利用している。 -各モジュールに共通のAPIを記述しており、 テンプレートに限らず共通して呼び出すことが可能である。 +各モジュールに共通のAPIを記述しており、 プロジェクトごと使うテンプレートに限らず共通して呼び出すことが可能である。
--- a/paper/chapter/history.tex Sat Feb 06 13:47:49 2021 +0900 +++ b/paper/chapter/history.tex Sat Feb 06 14:09:32 2021 +0900 @@ -1,6 +1,5 @@ \chapter*{研究関連業績} \begin{itemize} -\item レガシーPerlビルド, 清水 隆博 YAPC::Tokyo, Jan, 2019 \item CbCを用いたPerl6処理系 清水 隆博, 河野真治 第60回プログラミング・シンポジウム, Jan, 2019 \item How to build traditional Perl interpreters. Takahiro SHIMIZU PerlCon2019 , Aug, 2019 \item Perl6 Rakudo の内部構造について 清水 隆博 オープンソースカンファレンス 2019 Okinawa, Apr, 2020
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/src/queueTree.pl Sat Feb 06 14:09:32 2021 +0900 @@ -0,0 +1,39 @@ + }, + Phils { + elem { + content [ + [0] "enum Code putdown_lfork;", + [1] "union Data* phils;", + [2] "enum Code putdown_rfork;", + [3] "enum Code thinking;", + [4] "enum Code pickup_rfork;", + [5] "enum Code pickup_lfork;", + [6] "enum Code eating;", + [7] "enum Code next;" + ], + file_name "/home/anatofuz/src/firefly/hg/Gears/Gears/src/parallel_execution/../parallel_execution/examples/DPP2/Phils.h", + inner_code_gears { + next 1 + }, + name "Phils" + }, + impl { + PhilsImpl { + content [ + [0] "int self;", + [1] "struct AtomicT_int* Leftfork;", + [2] "struct AtomicT_int* Rightfork;", + [3] "enum Code next;" + ], + file_name "/home/anatofuz/src/firefly/hg/Gears/Gears/src/parallel_execution/../parallel_execution/examples/DPP2/PhilsImpl.h", + inner_code_gears {}, + isa "Phils", + name "PhilsImpl" + } + } + }, + Queue { + elem { + content [ + [0] "enum Code whenEmpty;", +