Mercurial > hg > Papers > 2021 > anatofuz-master
changeset 17:72bffc43a3a1
...
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 29 Jan 2021 17:26:43 +0900 |
parents | 69ab7cf9c1a1 |
children | 0a326d53e572 |
files | paper/chapter/01-cbc.tex paper/chapter/02-perl.tex paper/drawio/gears_os_build_flow.pdf paper/drawio/gears_os_build_flow.xml paper/master_paper.pdf paper/master_paper.tex |
diffstat | 6 files changed, 25 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/chapter/01-cbc.tex Fri Jan 29 17:26:43 2021 +0900 @@ -0,0 +1,4 @@ +\chapter{Continuation Based C} + +Continuation Based Cとは、 C言語から関数呼び出しとループ処理を取り除いた言語である。 +Cの下位言語と言え、 C言語とアセンブラの中間のような言語として利用することが出来る。 \ No newline at end of file
--- a/paper/chapter/02-perl.tex Fri Jan 29 16:18:15 2021 +0900 +++ b/paper/chapter/02-perl.tex Fri Jan 29 17:26:43 2021 +0900 @@ -26,11 +26,16 @@ その為GearsOSの拡張部分を、等価な純粋なCbCの記述に変換する必要がある。 現在のGearsOSでは、 CMakeによるコンパイル時にPerlで記述された\texttt{generate\_stub.pl}と\texttt{generate\_context.pl}の2種類のスクリプトで変換される。 + + \begin{itemize} \item \texttt{generate\_stub.pl} \begin{itemize} \item 各CbCファイルごとに呼び出されるスクリプト \item 対応するメタ計算を導入したCbCファイル(拡張子はc)に変換する + \begin{itemize} + \item 図\ref{fig:generate_stub_pl_1}に処理の概要を示す + \end{itemize} \end{itemize} \item \texttt{generate\_context.pl} \begin{itemize} @@ -41,7 +46,15 @@ これらのPerlスクリプトはプログラマが自分で動かすことはない。 GearsOSでプログラミングする際は、ビルドしたいプロジェクトをCMakeLists.txtに記述し、 移行はCMakeのビルドフローに従う。 -CMakeはMakefileやNinja fileを生成し実際にビルドはmakeやninja-buildが行う。 +CMakeはMakefileやbuild.ninjaを生成し実際にビルドはmakeやninja-buildが行う。 + +\begin{figure}[htp] + \begin{center} + \includegraphics[width=160mm]{drawio/gears_os_build_flow.pdf} + \end{center} + \caption{generate\_sub.plを利用したクロスコンパイル} + \label{fig:generate_stub_pl_1} + \end{figure} \section{pmake} GearsOSをビルドする場合は、x86アーキテクチャのマシンからビルドするのが殆どである。 @@ -70,11 +83,13 @@ CMakeを利用してクロスコンパイルする場合、CMakeの実行時に引数でクロスコンパイラを明示的に指定する必要がある。 この場合x86のマシンからARMのバイナリを出力する必要があり、 コンパイラやリンカーなどをARMのクロスコンパイル対応のものに指定する必要がある。 -また、 xv6の場合はOSであるためにリンク時に特定のリンカスクリプトを使う必要がある。 +また、 xv6の場合はリンク時に特定のリンカスクリプトを使う必要がある。 これらのリンカスクリプトもCMake側に、 CMakeが提供しているリンカ用の特殊変数を使って自分で組み立てて渡す必要がある。 このようなCMakeの処理を手打ちで行うことは難しいので、 \texttt{pmake.pl}を作成した。 -\texttt{pmake.pl}の処理フローを図\ref{fig:pmake}に示す。 +\texttt{pmake.pl}の処理の概要を図\ref{fig:pmake}に示す。 \texttt{pmake.pl}はPerlスクリプトで、 シェルコマンドを内部で実行しクロスコンパイル用のオプションを組み立てる。 +\texttt{pmake.pl}を経由してCMakeを実行すると、 makeコマンドに対応するMakefile、 ninja-buildに対応するbuild.ninjaが生成される。 +以降はcmakeではなくmakeなどのビルドツールがビルドを行う。 \begin{figure}[htp] \begin{center}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/drawio/gears_os_build_flow.xml Fri Jan 29 17:26:43 2021 +0900 @@ -0,0 +1,1 @@ +<mxfile host="app.diagrams.net" modified="2021-01-29T07:55:43.823Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36" etag="7wfivCbSiaqNyZ5r7Zeq" version="14.2.7" type="device"><diagram id="uDft0O6KGN2N0LUKW3wh" name="Page-1">7Vhdb9owFP01SN2kIkxIgMcGuu5la6tKm/Y0mdgkFk6c2g4f+/W7Jk5CIAhoqVqm8RL7+PraPvfYvqbljOLlncRp9E0QylvdDlm2nHGr20UO6sHHIKsc8YZuDoSSEWtUAU/sD7Vgx6IZI1TVDLUQXLO0DgYiSWigaxiWUizqZlPB66OmOKQ7wFOA+S76kxEd5eig26/wr5SFUTEy8oZ5S4wLY7sSFWEiFhuQc9tyRlIInZfi5YhyQ17BS97vy57WcmKSJvqYDkLP4sdnP2HffxD0GIzn81/zaxuMOeaZXbCdrF4VDMC8U1NMhIaPv4iYpk8pDgy2gKADFumYQw1BcYKDWShFlpD7THOWUIsTLGf30ItpI4ROu+MCaAenUtPl3lWhkisQGRUx1XIFJrbDwLJr5TW01UUVK1SYRBtx6nYsiK0+wtJzRSEULIsnMNq7dEbdOqOo9+6UogZKPQ7D+lMBa9rk1nvORNFwrdanyQ0YwPqXVSOUQvO9o1gqaB1NYF4ejg3xyUSlucl6gIksjLctlJAQMHPwELprfQUtn9vBJPhUtMHK89kW7i5KFN0tUbz/PvMufZ8Nhlucdt6d0/7Fc/rxDi/njQ6vh0zSY8+uKziKPjUeaXuQyz6sBujDnVbo9TJA/SYZhDShEmv6W+ls0k55Q/C1xIniWDORHH0bwZIgwz4itliledo9ZUtKzhO/nvPCXVyC54/fCWndlNPljXl6ABs0IbY4DjhWigV1+pSWYla+LJy8R1kd5HX7KkJe2+ubiNhmQ6E/ZZyPBBdyPQens/6VYaBk53VzMAgbJLsNHBeYpEZS87r7Jt7tCA+CrXVeJBT9Xi3Gpd/ChRIZJFi21+azZstRDx1wpLEMqd5xBGHBqw2z1Bio/RN2es3jVKrKPVYaKzl9hexOeJ/9l90RsvO2EtkXy67vHXB0Jtl5w+Zx3lZ2Tcn1iUkLarqtKA4iM3iSZvrYqwjuEb1153AWJkbaoCkKCvTNbcMCzG9sQ8wIMd19SWFGeLJ2ZeRp2Qa/rt9yx8ZXpoWyQj/TU6nvHs4+UGP28VaXV1Nef8Zwikz/w/H0trORQUM8nfPEE6rVH4L5bq7+VnVu/wI=</diagram></mxfile> \ No newline at end of file
--- a/paper/master_paper.tex Fri Jan 29 16:18:15 2021 +0900 +++ b/paper/master_paper.tex Fri Jan 29 17:26:43 2021 +0900 @@ -91,10 +91,11 @@ \listoftables %リスト目次 -% \lstlistoflistings +\lstlistoflistings %chapters \input{chapter/introduction.tex} +\input{chapter/01-cbc.tex} \input{chapter/02-perl.tex} \input{chapter/02-interface.tex} \input{chapter/conclusion.tex}