comparison paper/akasha.tex @ 94:2bc816f4af27

Fix
author atton <atton@cr.ie.u-ryukyu.ac.jp>
date Thu, 09 Feb 2017 18:58:53 +0900
parents c407b7403548
children ebe838b83ada
comparison
equal deleted inserted replaced
93:16dc3337a5a9 94:2bc816f4af27
201 201
202 \begin{figure}[htbp] 202 \begin{figure}[htbp]
203 \begin{center} 203 \begin{center}
204 \includegraphics[width=300pt]{fig/akashaPut.pdf} 204 \includegraphics[width=300pt]{fig/akashaPut.pdf}
205 \caption{put を利用するプログラムのメタを上書きする} 205 \caption{put を利用するプログラムのメタを上書きする}
206 \label{fig:akahsaPut} 206 \label{fig:akashaPut}
207 \end{center} 207 \end{center}
208 \end{figure} 208 \end{figure}
209 209
210 \verb/meta/ はリスト\ref{src:rbtree-insert-case-2}の \verb/insertCase2/ のように軽量継続を行なう際に CodeSegment 名と DataSegment を指定するものである。 210 \verb/meta/ はリスト\ref{src:rbtree-insert-case-2}の \verb/insertCase2/ のように軽量継続を行なう際に CodeSegment 名と DataSegment を指定するものである。
211 検証を行なわない通常の \verb/meta/ の実装は CodeSegment 名から対応する実体への軽量継続である(リスト\ref{src:meta})。 211 検証を行なわない通常の \verb/meta/ の実装は CodeSegment 名から対応する実体への軽量継続であった(リスト\ref{src:default-meta})。
212 212
213 \lstinputlisting[label=src:meta, caption=通常の CodeSegment の軽量継続] {src/meta.c} 213 \lstinputlisting[label=src:default-meta, caption=通常の CodeSegment の軽量継続] {src/meta.c}
214 214
215 これを、検証を行なうように変更することで \verb/insertCase2/ といった赤黒木の実装のコードを修正することなく検証を行なうことができる。 215 これを、検証を行なうように変更することで \verb/insertCase2/ といった赤黒木の実装のコードを修正することなく検証を行なうことができる。
216 検証を行ないながら軽量継続する \verb/meta/ はリスト\ref{src:akasha-meta}のように定義される。 216 検証を行ないながら軽量継続する \verb/meta/ はリスト\ref{src:akasha-meta}のように定義される。
217 実際の検証部分は \verb/PutAndGoToNextDepth/ の後に行なわれるため、直接は記述されていない。 217 実際の検証部分は \verb/PutAndGoToNextDepth/ の後に行なわれるため、直接は記述されていない。
218 この \verb/meta/ が行なうのは検証用にメモリの管理である。 218 この \verb/meta/ が行なうのは検証用にメモリの管理である。
225 % }}} 225 % }}}
226 226
227 % {{{ モデル検査器 CBMC との比較 227 % {{{ モデル検査器 CBMC との比較
228 228
229 \section{モデル検査器 CBMC との比較} 229 \section{モデル検査器 CBMC との比較}
230 akasha の比較対象として、 C言語の有限モデルチェッカ CBMC\cite{cite:cbmc} を用いて赤黒木を検証した。 230 akasha の比較対象として、 C言語の有限モデルチェッカ CBMC\cite{cbmc} を用いて赤黒木を検証した。
231 CBMC は ANSI-C を記号実行し、仕様の否定となるような実行パターンが無いかを検証するツールである。 231 CBMC は ANSI-C を記号実行し、仕様の否定となるような実行パターンが無いかを検証するツールである。
232 232
233 比較のために全く同じ赤黒木のソースコードを用いたいが、CbCの構文は厳密にはCとは異なるために変換が必要である。 233 比較のために全く同じ赤黒木のソースコードを用いたいが、CbCの構文は厳密にはCとは異なるために変換が必要である。
234 具体的には、\verb/__code/ を \verb/void/ に、 \verb/goto/ を \verb/return/ に置換することで機械的にC言語に変換できる。 234 具体的には、\verb/__code/ を \verb/void/ に、 \verb/goto/ を \verb/return/ に置換することで機械的にC言語に変換できる。
235 235