# HG changeset patch # User mir3636 # Date 1549504990 -32400 # Node ID 68f10de82b878d2cd9e70aa778ef5d0b0c47a18b # Parent 52521f53f29da2dddf8f546bcd5f89a00c6fd59d update diff -r 52521f53f29d -r 68f10de82b87 paper/generate_code.tex --- a/paper/generate_code.tex Thu Feb 07 10:45:28 2019 +0900 +++ b/paper/generate_code.tex Thu Feb 07 11:03:10 2019 +0900 @@ -95,7 +95,12 @@ \section{Context の生成} generate\_context は Context を生成する Perl スクリプトである。 Context は生成する際に Code Gear のリストとアドレスの対応、 -引数格納用の Data Gear の生成、 +引数格納用の Data Gear の生成を行う。 + +このため Gears OS で新たに Code Gear、Data Gear を定義した際には、 +Code Gear、Data Gear の enum のリストの更新、引数格納用の Data Gear の Allocation を行うコードの記述を行わなければならなかった。 + +generate\_context を用いることでこれらの煩雑な記述を自動生成で行えるようにした。 \begin{figure}[ht] \begin{center} @@ -105,9 +110,7 @@ \label{fig:gc} \end{figure} -Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。 - -generate\_context は context.h を読み宣言されている Data Gear を取得する。 +generate\_context は Context の定義が記述されている context.h を読み、宣言されている Data Gear を取得する。 Code Gear の取得は指定された generate\_stub で生成されたコードから \_\_code 型を見て行う。 取得した Code Gear、Data Gear の enum の定義は enumCode.h、enumData.h に生成される。 diff -r 52521f53f29d -r 68f10de82b87 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed diff -r 52521f53f29d -r 68f10de82b87 paper/xv6.tex --- a/paper/xv6.tex Thu Feb 07 10:45:28 2019 +0900 +++ b/paper/xv6.tex Thu Feb 07 11:03:10 2019 +0900 @@ -90,6 +90,7 @@ GCC 上で実装した CbC コンパイラを ARM 向けに build し xv6-rpi をコンパイルした。 これにより、 xv6-rpi を CbC で書き換えることができるようになった。 +\section{システムコールの書き換え} ソースコード \ref{syscall} は syscall() におけるシステムコールの呼び出しを行うコードである。 システムコールはソースコード \ref{syscall_list} の関数のリストから呼び出される。 CbC でも同様に num で指定された番号の cbccodes のリストの Code Gear へ goto する。 @@ -114,11 +115,3 @@ } \end{lstlisting} - - - - - - -\section{システムコールの書き換え} -