changeset 6:3436da54f678

*** empty log message ***
author kent
date Wed, 02 Jul 2008 11:02:49 +0900
parents a641d4977dfc
children 657e392afc09
files slide.tex
diffstat 1 files changed, 75 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/slide.tex	Tue Jul 01 16:53:19 2008 +0900
+++ b/slide.tex	Wed Jul 02 11:02:49 2008 +0900
@@ -5,6 +5,7 @@
 \documentclass[mathserif]{beamer}
 \usepackage{graphicx}
 \usepackage{verbatim}
+\usepackage{ulem}
 %\usepackage{beamerthemesplit}
 %manual% open /usr/local/ptetex/share/texmf-dist/doc/latex/beamer/beameruserguide.pdf
 
@@ -74,7 +75,7 @@
       \item OS、デバイスドライバ、ハードウェアの記述が可能
     \end{itemize}
   \end{exampleblock}
-  \begin{exampleblock}{Recent work}
+  \begin{exampleblock}{Recent works}
     \begin{itemize}
       \item Micro-Cによる実装 (i386,PPC,mips,spu,arm)
       \item タブロー法によるCbCプログラムの検証
@@ -176,6 +177,7 @@
 
 \begin{frame}[fragile]
   \frametitle{実装に必要な構文}
+  構文は以下の二つが通れば良い。
   \begin{itemize}
       \huge
     \item \verb|__code cs(int a, char *b)|
@@ -211,12 +213,25 @@
 
 
 \section{Tail call}
+
+\begin{frame}
+  \frametitle{Tail call elimination}
+  \begin{exampleblock}{Waht is it?}
+    \begin{itemize}
+      \item 関数呼び出しに関する最適化
+      \item call命令じゃなく、jmp命令を使用する (i386)
+      \item スタックを拡張せず、現在のスタックフレームを書き潰す
+    \end{itemize}
+  \end{exampleblock}
+  GCCへの実装ではこの最適化を利用して行う
+\end{frame}
+
 \begin{frame}
   \frametitle{Tail call elimination}
   a%\includegraphics[width=.9\textwidth]{figures/GCC-TailCall.eps}
 \end{frame}
 
-\begin{frame}[fragile]
+\begin{comment}[fragile]
   \begin{columns}[t]
   \column{.5\textwidth}
   \begin{verbatim}
@@ -246,7 +261,7 @@
     jmp     B
   \end{verbatim}
   \end{columns}
-\end{frame}
+\end{comment}
 
 \begin{frame}
   \frametitle{Tail callの条件}
@@ -256,8 +271,8 @@
     \item caller側の引数サイズがcallee側の引数サイズより大きいもしくは等しい
     \item 書き込んだ引数が、その後書き込む引数を上書きしてはならない
   \end{enumerate}
-  \center
-  \visible<2>{引数をすべて固定数とすることで対応}
+  %\center
+  %\visible<2>{引数をすべて固定数とすることで対応}
 \end{frame}
 
 \section{実装}
@@ -273,7 +288,7 @@
   \end{itemize}
 \end{frame}
 
-\begin{frame}
+\begin{comment}
   \frametitle{expand\_call}
   \begin{exampleblock}{What is the function?}
     \begin{itemize}
@@ -284,9 +299,9 @@
       \item そして読みづらい
     \end{itemize}
   \end{exampleblock}
-\end{frame}
+\end{comment}
 
-\begin{frame}
+\begin{comment}
   \frametitle{expand\_cbc\_goto}
   \begin{exampleblock}{What is it doing?}
     \begin{itemize}
@@ -297,31 +312,7 @@
       \item 500行程度
     \end{itemize}
   \end{exampleblock}
-\end{frame}
-
-\section{環境付き継続に関する考察}
-\begin{frame}[fragile]
-  \frametitle{環境付き継続}
-  未実装の構文
-  \begin{verbatim}
-  env = malloc(STACKSIZE);
-  goto cs( 10 ), env;
-  \end{verbatim}
-  \begin{itemize}
-    \item envは現在とは違うメモリ空間を表す
-      \begin{itemize}
-	\item mallocで取得
-	\item 中断した別スレッドのスッタクフレーム
-	\item 関数から継続した場合の元のスタックフレーム
-      \end{itemize}
-    \item そのenvで表される環境(スタック)へスタックフレームを変更したあと継続 \\
-      具体的には\verb|%ebp|を変更
-  \end{itemize}
-\end{frame}
-
-\begin{frame}
-  \frametitle{実装における問題}
-\end{frame}
+\end{comment}
 
 \section{評価}
 \begin{frame}[fragile]
@@ -345,23 +336,65 @@
   \end{description}
 \end{frame}
 
-%\begin{frame}
-  %\frametitle{考察}
-%\end{frame}
+\renewcommand<>{\sout}[1]{\temporal#2{#1}{\beameroriginal{\sout}{#1}}{#1}}
+\section{環境付き継続に関する考察}
+\begin{frame}[fragile]
+  \frametitle{環境付き継続}
+  %\sout<2>{未実装の構文}\\
+  未実装の構文
+  %\uncover<2>{新たに実装された構文}
+  \begin{verbatim}
+  goto cs( 10 ), env;
+  \end{verbatim}
+  %env = malloc(STACKSIZE);
+  \begin{itemize}
+    \item envは現在とは別のスタック空間を表す
+      \begin{itemize}
+	\item mallocで取得
+	\item 中断した別スレッドのスッタクフレーム
+	\item 関数から継続した場合の元のスタックフレーム
+      \end{itemize}
+    \item そのenvで表される環境(スタック)へスタックフレームを変更したあと継続する \\
+      具体的には\verb|%ebp|を変更
+  \end{itemize}
+\end{frame}
 
+\begin{frame}[fragile]
+  \frametitle{環境付き継続}
+  Micro-CでのCbCでは以下の使い方が主となっている
+  \begin{verbatim}
+  int func(void){
+      /* something */
+      goto cs( __environment, __return );
+  }
+  __code cs(void *env, void *ret){
+      /* something */
+      goto ret(20), env;
+  }
+  \end{verbatim}
+  このように、\verb|__environment,__return|を使用して、呼び出し元関数の環境へ戻れる。
+  この使用方法に限れば、GCCでも実装完了。
+\end{frame}
+
+\begin{frame}
+  \frametitle{実装方法}
+
+\end{frame}
+
+\section{まとめ}
 \begin{frame}
   \frametitle{まとめ}
   \begin{block}{Conclusion}
     \begin{itemize}
       \item GCCにCbCコンパイラを実装
       \item そのベンチマークによる性能向上の確認
-      \item 環境付き継続の実装方法の考察
+      \item 環境付き継続の実装及び問題点の考察
     \end{itemize}
   \end{block}
 
   \begin{block}{TO DO}
     \begin{itemize}
-      \item environment 
+      \item environmentの強化
       \item PPCのRTL変換不能 
       \item オプションの強制 
       \item SPU対応とGCCのversion 
@@ -377,10 +410,10 @@
 %河野真治 , 日本ソフトウェア科学会第17回大会論文集, September, 2000 (in Japanese)
 %継続を基本とするプログラム単位を用いた組込みシステム開発 , 河野 真治 (琉球大学), 組み込みソフトウェア工学シンポジウム2003, Oct,2003
 
-\appendix
-\begin{frame}
-  a%\includegraphics[width=.9\textwidth]{figures/stack-tailcall.eps}
-\end{frame}
+%\appendix
+%\begin{frame}
+  %a%\includegraphics[width=.9\textwidth]{figures/stack-tailcall.eps}
+%\end{frame}
 
 \end{document}