Mercurial > hg > Papers > 2012 > nobu-thesis
changeset 13:b3ebb4a6ae75 draft
modify
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 22 Feb 2012 21:11:09 +0900 |
parents | f0a7ebdf9d3f |
children | 003a659c528e |
files | paper/resume.tex |
diffstat | 1 files changed, 24 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/resume.tex Wed Feb 22 18:37:06 2012 +0900 +++ b/paper/resume.tex Wed Feb 22 21:11:09 2012 +0900 @@ -28,16 +28,24 @@ \maketitle \thispagestyle{fancy} -\section{研究背景と目的} +\section{はじめに} 当研究室ではプログラムをコードセグメント (Code Segment) 単位で記述するプログラミング言語 Continuation based C (以下 CbC) を提案している. -コードセグメントは並列実行の単位として使うことができ, プログラムの正しさを示す単位としても使用することができる.これにより, - Many Core での並列実行を高い性能と高い信頼性で実現することができると考えている. +%コードセグメントは並列実行の単位として使うことができ, プログラムの正しさを示す単位としても使用することができる.これにより, +% Many Core での並列実行を高い性能と高い信頼性で実現することができると考えている. +コードセグメントは C の関数よりも細かな単位で, 状態を表すことができる. +その為 CbC では状態遷移記述を行うことができ, 状態探索といったモデル検査が行えると考えられている. -GCC をベースとした CbC のコンパイラ (以下 CbC-GCC)は, GCC のアップデートに合わせて変更する必要がある. -本研究では, GCC-4.5 をベースとしていた CbC-GCC を GCC-4.6 へのアップデートを行い, Intel64 に対応するとともに, CbC の拡張を行う. +%GCC をベースとした CbC のコンパイラ (以下 CbC-GCC)は, GCC のアップデートに合わせて変更する必要がある. +%当研究室には 2008 年に開発されて以来アップデートがGCC-4.5 をベースとした CbC コンパイラがある. +当研究室では GCC ベースの CbC コンパイラ(以下 CbC-GCC) が開発されている. +しかし, いくつかバグがあり機能の修正の余地があった. +また, GCC の最新の機能を使用する為にも CbC-GCC は GCC のアップデートに合わせていく必要がある. +本研究では, GCC-4.5 をベースとしていた CbC-GCC を GCC-4.6 へのアップデートとすると共に機能の修正 +を行う. +%本研究では, GCC-4.5 をベースとしていた CbC-GCC を GCC-4.6 へのアップデートを行い, Intel64 に対応するとともに, CbC の拡張を行う. \section{Continuation basede C (CbC)} -Continuation based C (以下 CbC) は状態遷移記述が行うことができる C を基本としたプログラミング言語である. +Continuation based C (以下 CbC) は C を基本としたプログラミング言語である. 構文は C と同じであるが, 継続(goto) やコードセグメントの導入によりループ制御や関数コールが取り除かれる. CbC のプログラムはコードセグメントの末尾から次のコードセグメントへの継続を記述することで作られる. 図\ref{fig:cs}はコードセグメント間の処理の流れを表している. @@ -84,10 +92,12 @@ %持つコードセグメントになる. %GCC内部では, \verb+__return+ は, 関数内で定義された \verb+_cbc_internal_return+関数へのポインタを返す. %戻値は, \verb+cbc_internal_return+ 関数内で定義された変数\verb+retval+を通して返される(Listing\ref{code:retval}) . -実際には \verb+__return+ キーワードにより GCC 内部でlisting\ref{code:retval}のコードが生成されている. +%実際には \verb+__return+ キーワードにより GCC 内部でlisting\ref{code:retval}のコードが生成されている. +実際には \verb+__return+ キーワードにより GCC 内部で次の様なコードが生成されている. \begin{figure}[h] \begin{minipage}[b]{.45\textwidth} - \begin{lstlisting}[caption=環境付き継続を行うコード,label=code:retval] +% \begin{lstlisting}[caption=環境付き継続を行うコード,label=code:retval] + \begin{verbatim} ({ __label__ _cbc_exit0; static int retval; @@ -102,7 +112,7 @@ } _cbc_internal_return; }) - \end{lstlisting} + \end{verbatim} \end{minipage} \hfill \end{figure} @@ -120,21 +130,21 @@ 通常, 関数定義において引数の中に自分自身を指す関数ポインタを入れることはできない. そこで, \verb+__rectype+を使うことでlisting\ref{code:rectype}の用な宣言が行うことができる. また, 構造体の宣言時に宣言中の構造体を指す``selftype'' 構文の追加も行った. -listing\ref{code:rectype}の様な宣言が行えるようになった. +以下の様な宣言が行えるようになった. この時\verb+__rectype+は funcPtr を指し, selftype は struct node を指す. \begin{figure}[h] \begin{minipage}[b]{.45\textwidth} - \begin{lstlisting}[caption=\_\_rectype\, selftype 構文の使用例,label=code:rectype] + \begin{verbatim} typedef __code (*funcPtr)(int,__rectype*); struct node { int num; selftype child; } - \end{lstlisting} + \end{verbatim} \end{minipage} - \hfill \end{figure} - +% \begin{lstlisting}[caption=\_\_rectype\, selftype 構文の使用例,label=code:rectype] +% \end{lstlisting} \section{評価} 今回実装を行った GCC-4.6 ベース と安定版である GCC-4.4 ベース, それと Micro-C の CbC コンパイラでベンチマークを行った.