# HG changeset patch # User Kaito Tokumori # Date 1454662093 -32400 # Node ID 2fd0f505cc68b7dd5d4d7bd44eefccc9c2be118a # Parent 68928e796ed84eac713705a68ac1f3f120e584e1 chapter1 diff -r 68928e796ed8 -r 2fd0f505cc68 paper/chapter1.tex --- a/paper/chapter1.tex Tue Jan 19 18:24:05 2016 +0900 +++ b/paper/chapter1.tex Fri Feb 05 17:48:13 2016 +0900 @@ -1,8 +1,130 @@ \chapter{Continuation based C (CbC)} +CbC の構文は C と同じであるが, for文, while文といったループ制御構文や関数呼び出しを取り除き\footnote{言語仕様としては存在しないが while や for を使用することは可能である. }, code segment と goto による軽量継続を導入している. +以下の図\ref{fig:cs}は code segment 同士の関係を表したものであり, 図中の丸が code segment を, 矢印が goto による継続を表している. + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.35}{\includegraphics{fig/codesegment2.pdf}} + \end{center} + \caption{goto による code segment 間の継続} + \label{fig:cs} +\end{figure} \section{CbC における Code Segment} +CbC では処理の単位として code segment を用いる。code segment は CbC における最も基本的な処理単位であり, C の関数と異なり戻り値を持たない. +code segment の宣言は C の関数の構文と同じように行い, 型に \_\_code を用いる. ただし, これは \_\_code 型の戻り値を返すという意味ではない. 前述した通り, code segment は戻り値を持たないので, \_\_code はそれが関数ではなく code segment であることを示すフラグのようなものである. +code segment の処理内容の定義も C の関数同様に行うが, 前述した通り CbC にはループ制御構文が存在しないので, ループ処理は自分自身への再帰的な継続を行うことで実現する. + +現在の code segment から次の code segment への処理の移動は goto の後に code segment 名と引数を並べて記述するという CbC 独自の構文を用いて行う. この goto による処理の遷移を継続と呼ぶ. +C において関数呼び出しを繰り返し行う場合, 呼び出された関数の引数の数だけスタックに値が積まれていくが, 戻り値を持たない code segment ではスタックに値を積んでいく必要が無くスタックは変更されない. +このようなスタックに値を積まない継続, つまり呼び出し元の環境を持たない継続を軽量継続と呼び, 軽量継続により並列化, ループ制御, 関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようになる. + +以下に CbC を用いたコードの例として, 与えられた数値の階乗を算出するプログラムを示す. このコードの factorial0 という code segment に注目すると, 条件判別を行い, その結果に応じて自分自身への再帰的な継続を行うか別の code segment への継続を行うかという処理を行っていることがわかる. CbC ではこのようにしてループ処理を制御する. +\begin{lstlisting}[frame=lrbt,label=factorial,caption={\footnotesize 階乗を求める CbC プログラムの例}] +__code print_factorial(int prod) +{ + printf("factorial = %d\n",prod); + exit(0); +} + +__code factorial0(int prod, int x) +{ + if ( x >= 1) { + goto factorial0(prod*x, x-1); + }else{ + goto print_factorial(prod); + } + +} + +__code factorial(int x) +{ + goto factorial0(1, x); +} + +int main(int argc, char **argv) +{ + int i; + i = atoi(argv[1]); + + goto factorial(i); +} +\end{lstlisting} + \section{環境付き継続} +\label{sec:withEnv} +環境付き継続は C との互換性のために必要な機能である. CbC と C の記述を交える際, CbC の code segment から C の関数の呼び出しは問題なく行える. しかし, C の関数から CbC の code segment へと継続する場合, 呼び出し元の環境に戻るための特殊な継続が必要となる. これを環境付き継続と呼ぶ. + +この環境付き継続を導入した言語は C with Continuation (CwC) と呼ばれ, C と CbC の両方の機能を持つ言語となる. また, C, CbC は CwC のサブセットと考えられるので, CwC のコンパイラを CbC に使用することができる. これまでに実装されてきた CbC コンパイラは実際には CwC のコンパイラとして実装されている. + +環境付き継続を用いる場合, C の関数から code segment へ継続する際に \_\_return, \_\_environment という変数で表される特殊変数を渡す. \_\_return は環境付き継続先が元の環境に戻る際に利用する code segment, \_\_environment は元の関数の環境を表す. リスト\ref{gotoWithTheEnv}では関数 funcB から code segment cs に継続する際に環境付き継続を利用している. cs は funcB から渡された code segment へ継続することで元の C の環境に復帰することが可能となる. 但し復帰先は \_\_return を渡した関数が終了する位置である. このプログラムの例では, 関数 funcA は戻り値として funcB の終わりにある -1 ではなく, 環境付き継続によって渡される 1 を受け取る. 図\ref{fig:gotoWithTheEnv}にこの様子を表した. + +\begin{lstlisting}[frame=lrbt,label=gotoWithTheEnv,caption={環境付き継続}] +__code cs(__code (*ret)(int, void*), void *env){ + /* C0 */ + goto ret(1, env); +} + +int funcB(){ + /* B0 */ + goto cs(__return, __environment); + /* B1 (never reached). */ + return -1; +} + +int funcA(){ + /* A0 */ + int retval; + retval = funcB(); + /* A1 */ + printf("retval = %d\n", retval); + /* retval should not be -1 but be 1. */ +} + +\end{lstlisting} + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.55}{\includegraphics{fig/gotowithenv.pdf}} + \end{center} + \caption{環境付き継続} + \label{fig:gotoWithTheEnv} +\end{figure} + + +このような形にすることで, code segment 側では関数から呼ばれたか, code segment からの継続かを考慮する必要がなくなる. また, funcA から見た場合にも, 呼び出した関数の内部で code segment が使われているかどうかが隠蔽され, code segment の有無を考慮しなくて良い. + \section{Gears OS サポート} -\subsection{Gears OS} -\subsection{Gears OS 向けの機能} +Gears OS は当研究室で開発している並列フレームワークで, CbC で記述している. Gears では通常の CbC には存在しないメタレベルの処理を表す meta code segment, データの単位である data segment, data segment や code segment 等の情報を管理する context 等がある. これらを現在の CbC の機能のみを用いて記述するとリスト\ref{gears}のようになり, 多くの労力を要する. そのためこの記述を助ける機能が必要であり, 本研究ではこれらを利用するプログラミングをサポートするために以下の機能を提案した. + +\begin{itemize} +\item code segment から meta code segment への自動接続 +\item 継続時に context から必要な情報を取得する stub の自動生成 +\item code segment 内での context の隠蔽 +\end{itemize} + +\begin{lstlisting}[frame=lrbt,label=gears,caption={Gears OS コード例}] +__code meta(struct Context* context, enum Code next) { + goto (context->code[next])(context); +} + +__code code1_stub(struct Context* context) { + goto code1(context, &context->data[Allocate]->allocate); +} +__code code1(struct Context* context, struct Allocate* allocate) { + allocate->size = sizeof(long); + allocator(context); + goto meta(context, Code2); +} + + +__code code2(struct Context* context, long* count) { + *count = 0; + goto meta(context, Code3); +} + +__code code2_stub(struct Context* context) { + goto code2(context, &context->data[Count]->count); +} +\end{lstlisting} diff -r 68928e796ed8 -r 2fd0f505cc68 paper/chapter2.tex --- a/paper/chapter2.tex Tue Jan 19 18:24:05 2016 +0900 +++ b/paper/chapter2.tex Fri Feb 05 17:48:13 2016 +0900 @@ -1,4 +1,9 @@ \chapter{LLVM, clang} +LLVM とはコンパイラ, ツールチェーン技術等を開発するプロジェクトの名称である. 単に LLVM といった場合は LLVM Core を指し, これはコンパイラの基板となるライブラリの集合である. 以降は本論文でも, 単に LLVM といった場合は LLVM Core を指す. LLVM IR や LLVM BitCode と呼ばれる独自の言語を持ち, この言語で書かれたプログラムを実行することのできる仮想機械も持つ. また, LLVM IR を特定のターゲットの機械語に変換することが可能であり, その際に LLVM の持つ最適化機構を利用することができる. + +clang は バックエンドに LLVM を利用する C/C++/Objective-C コンパイラである. 具体的には与えられたコードを解析し, LLVM IR に変換する部分までを自身で行い, それをターゲットマシンの機械語に変換する処理と最適化に LLVM を用いる. +GCC と比較すると丁寧でわかりやすいエラーメッセージを出力する, コンパイル時間が短いといった特徴を持つ. + \section{clang の基本構造} \section{LLVM の基本構造} \section{Tail call elimination} diff -r 68928e796ed8 -r 2fd0f505cc68 paper/chapter3.tex --- a/paper/chapter3.tex Tue Jan 19 18:24:05 2016 +0900 +++ b/paper/chapter3.tex Fri Feb 05 17:48:13 2016 +0900 @@ -1,8 +1,6 @@ \chapter{LLVM, clang 上での CbC の実装} -\section{過去の研究での実装} -\subsection{コードセグメント} -\subsection{軽量継続} -\subsection{環境付き継続} -\section{本研究での実装} -\subsection{プロトタイプ宣言の自動化} -\subsection{フレームポインタ操作最適化} +\section{コードセグメント} +\section{軽量継続} +\section{環境付き継続} +\section{プロトタイプ宣言の自動化} +\section{フレームポインタ操作最適化} diff -r 68928e796ed8 -r 2fd0f505cc68 paper/fig/cbcreturn.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/fig/cbcreturn.eps Fri Feb 05 17:48:13 2016 +0900 @@ -0,0 +1,919 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: /home/kent/WorkSpace/Mercurial/master-paper/figures/cbcreturn.dia +%%Creator: Dia v0.97 +%%CreationDate: Fri Jan 29 16:03:03 2010 +%%For: kent +%%Orientation: Portrait +%%Magnification: 1.0000 +%%BoundingBox: 0 0 426 318 +%%BeginSetup +%%EndSetup +%%EndComments +%%BeginProlog +[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright +/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E +/F /G /H /I /J /K /L /M /N /O +/P /Q /R /S /T /U /V /W /X /Y +/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c +/d /e /f /g /h /i /j /k /l /m +/n /o /p /q /r /s /t /u /v /w +/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright +/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior +/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf +/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla +/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde +/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex +/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring +/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis +/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave +/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def +/cp {closepath} bind def +/c {curveto} bind def +/f {fill} bind def +/a {arc} bind def +/ef {eofill} bind def +/ex {exch} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth pop} bind def +/tr {translate} bind def + +/ellipsedict 8 dict def +ellipsedict /mtrx matrix put +/ellipse +{ ellipsedict begin + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def /savematrix mtrx currentmatrix def + x y tr xrad yrad sc + 0 0 1 startangle endangle arc + savematrix setmatrix + end +} def + +/mergeprocs { +dup length +3 -1 roll +dup +length +dup +5 1 roll +3 -1 roll +add +array cvx +dup +3 -1 roll +0 exch +putinterval +dup +4 2 roll +putinterval +} bind def +/dpi_x 300 def +/dpi_y 300 def +/conicto { + /to_y exch def + /to_x exch def + /conic_cntrl_y exch def + /conic_cntrl_x exch def + currentpoint + /p0_y exch def + /p0_x exch def + /p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def + /p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def + /p2_x p1_x to_x p0_x sub 1 3 div mul add def + /p2_y p1_y to_y p0_y sub 1 3 div mul add def + p1_x p1_y p2_x p2_y to_x to_y curveto +} bind def +/start_ol { gsave 1.1 dpi_x div dup scale} bind def +/end_ol { closepath fill grestore } bind def +28.346000 -28.346000 scale +-1.050000 -12.565163 translate +%%EndProlog + + +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 1.400000 2.250000 m 1.400000 6.250000 l 2.400000 6.250000 l 2.400000 2.250000 l f +0.000000 0.000000 0.000000 srgb +n 1.400000 2.250000 m 1.400000 6.250000 l 2.400000 6.250000 l 2.400000 2.250000 l cp s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 1.400000 7.250000 m 1.400000 11.250000 l 2.400000 11.250000 l 2.400000 7.250000 l f +0.000000 0.000000 0.000000 srgb +n 1.400000 7.250000 m 1.400000 11.250000 l 2.400000 11.250000 l 2.400000 7.250000 l cp s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 7.400000 3.250000 m 7.400000 7.250000 l 8.400000 7.250000 l 8.400000 3.250000 l f +0.000000 0.000000 0.000000 srgb +n 7.400000 3.250000 m 7.400000 7.250000 l 8.400000 7.250000 l 8.400000 3.250000 l cp s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 7.400000 8.250000 m 7.400000 11.250000 l 8.400000 11.250000 l 8.400000 8.250000 l f +0.000000 0.000000 0.000000 srgb +n 7.400000 8.250000 m 7.400000 11.250000 l 8.400000 11.250000 l 8.400000 8.250000 l cp s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +1.000000 1.000000 1.000000 srgb +n 13.300000 3.850000 m 13.300000 8.850000 l 14.300000 8.850000 l 14.300000 3.850000 l f +0.000000 0.000000 0.000000 srgb +n 13.300000 3.850000 m 13.300000 8.850000 l 14.300000 8.850000 l 14.300000 3.850000 l cp s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 2.400000 6.250000 m 3.396000 6.250000 5.400000 1.250000 7.095306 2.945306 c s +[] 0 sd +0 slj +0 slc +n 7.360472 3.210472 m 6.830141 3.033695 l 7.095306 2.945306 l 7.183695 2.680141 l ef +n 7.360472 3.210472 m 6.830141 3.033695 l 7.095306 2.945306 l 7.183695 2.680141 l cp s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 7.400000 11.250000 m 6.404000 11.250000 5.400000 7.250000 2.830902 7.250000 c s +[] 0 sd +0 slj +0 slc +n 2.455902 7.250000 m 2.955902 7.000000 l 2.830902 7.250000 l 2.955902 7.500000 l ef +n 2.455902 7.250000 m 2.955902 7.000000 l 2.830902 7.250000 l 2.955902 7.500000 l cp s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 8.400000 7.250000 m 9.396000 7.250000 11.300000 1.850000 12.995306 3.545306 c s +[] 0 sd +0 slj +0 slc +n 13.260472 3.810472 m 12.730141 3.633695 l 12.995306 3.545306 l 13.083695 3.280141 l ef +n 13.260472 3.810472 m 12.730141 3.633695 l 12.995306 3.545306 l 13.083695 3.280141 l cp s +0.050000 slw +[] 0 sd +[] 0 sd +0 slj +0 slc +n 13.300000 8.850000 m 3.700000 17.075000 6.850000 9.200000 3.639642 7.683998 c s +[] 0 sd +0 slj +0 slc +n 3.300549 7.523870 m 3.859425 7.511311 l 3.639642 7.683998 l 3.645922 7.963436 l ef +n 3.300549 7.523870 m 3.859425 7.511311 l 3.639642 7.683998 l 3.645922 7.963436 l cp s +gsave 1.500000 4.550000 translate 0.035278 -0.035278 scale +start_ol +1696 3047 moveto +1042 1280 lineto +2352 1280 lineto +1696 3047 lineto +1424 3520 moveto +1970 3520 lineto +3328 0 lineto +2827 0 lineto +2502 896 lineto +897 896 lineto +572 0 lineto +64 0 lineto +1424 3520 lineto +end_ol grestore +gsave 1.937092 4.550000 translate 0.035278 -0.035278 scale +start_ol +1535 3200 moveto +1185 3200 1008 2840 conicto +832 2481 832 1759 conicto +832 1039 1008 679 conicto +1185 320 1535 320 conicto +1887 320 2063 679 conicto +2240 1039 2240 1759 conicto +2240 2481 2063 2840 conicto +1887 3200 1535 3200 conicto +1536 3584 moveto +2127 3584 2439 3116 conicto +2752 2649 2752 1759 conicto +2752 871 2439 403 conicto +2127 -64 1536 -64 conicto +944 -64 632 403 conicto +320 871 320 1759 conicto +320 2649 632 3116 conicto +944 3584 1536 3584 conicto +end_ol grestore +gsave 1.550000 9.500000 translate 0.035278 -0.035278 scale +start_ol +1696 3047 moveto +1042 1280 lineto +2352 1280 lineto +1696 3047 lineto +1424 3520 moveto +1970 3520 lineto +3328 0 lineto +2827 0 lineto +2502 896 lineto +897 896 lineto +572 0 lineto +64 0 lineto +1424 3520 lineto +end_ol grestore +gsave 1.987092 9.500000 translate 0.035278 -0.035278 scale +start_ol +640 384 moveto +1408 384 lineto +1408 3136 lineto +576 2944 lineto +576 3328 lineto +1434 3520 lineto +1920 3520 lineto +1920 384 lineto +2688 384 lineto +2688 0 lineto +640 0 lineto +640 384 lineto +end_ol grestore +gsave 7.550000 5.500000 translate 0.035278 -0.035278 scale +start_ol +960 1728 moveto +960 384 lineto +1696 384 lineto +2071 384 2251 550 conicto +2432 716 2432 1057 conicto +2432 1401 2251 1564 conicto +2071 1728 1696 1728 conicto +960 1728 lineto +960 3136 moveto +960 2112 lineto +1639 2112 lineto +1975 2112 2139 2238 conicto +2304 2365 2304 2624 conicto +2304 2881 2139 3008 conicto +1975 3136 1639 3136 conicto +960 3136 lineto +448 3520 moveto +1673 3520 lineto +2222 3520 2519 3300 conicto +2816 3080 2816 2674 conicto +2816 2360 2658 2174 conicto +2500 1989 2193 1943 conicto +2549 1866 2746 1621 conicto +2944 1376 2944 1009 conicto +2944 526 2625 263 conicto +2306 0 1718 0 conicto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 7.989589 5.500000 translate 0.035278 -0.035278 scale +start_ol +1535 3200 moveto +1185 3200 1008 2840 conicto +832 2481 832 1759 conicto +832 1039 1008 679 conicto +1185 320 1535 320 conicto +1887 320 2063 679 conicto +2240 1039 2240 1759 conicto +2240 2481 2063 2840 conicto +1887 3200 1535 3200 conicto +1536 3584 moveto +2127 3584 2439 3116 conicto +2752 2649 2752 1759 conicto +2752 871 2439 403 conicto +2127 -64 1536 -64 conicto +944 -64 632 403 conicto +320 871 320 1759 conicto +320 2649 632 3116 conicto +944 3584 1536 3584 conicto +end_ol grestore +gsave 7.500000 9.950000 translate 0.035278 -0.035278 scale +start_ol +960 1728 moveto +960 384 lineto +1696 384 lineto +2071 384 2251 550 conicto +2432 716 2432 1057 conicto +2432 1401 2251 1564 conicto +2071 1728 1696 1728 conicto +960 1728 lineto +960 3136 moveto +960 2112 lineto +1639 2112 lineto +1975 2112 2139 2238 conicto +2304 2365 2304 2624 conicto +2304 2881 2139 3008 conicto +1975 3136 1639 3136 conicto +960 3136 lineto +448 3520 moveto +1673 3520 lineto +2222 3520 2519 3300 conicto +2816 3080 2816 2674 conicto +2816 2360 2658 2174 conicto +2500 1989 2193 1943 conicto +2549 1866 2746 1621 conicto +2944 1376 2944 1009 conicto +2944 526 2625 263 conicto +2306 0 1718 0 conicto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 7.939589 9.950000 translate 0.035278 -0.035278 scale +start_ol +640 384 moveto +1408 384 lineto +1408 3136 lineto +576 2944 lineto +576 3328 lineto +1434 3520 lineto +1920 3520 lineto +1920 384 lineto +2688 384 lineto +2688 0 lineto +640 0 lineto +640 384 lineto +end_ol grestore +gsave 13.400000 6.600000 translate 0.035278 -0.035278 scale +start_ol +3136 3264 moveto +3136 2752 lineto +2892 2977 2616 3088 conicto +2340 3200 2030 3200 conicto +1418 3200 1093 2829 conicto +768 2459 768 1759 conicto +768 1061 1093 690 conicto +1418 320 2030 320 conicto +2340 320 2616 431 conicto +2892 543 3136 768 conicto +3136 256 lineto +2882 96 2599 16 conicto +2316 -64 2000 -64 conicto +1189 -64 722 424 conicto +256 913 256 1759 conicto +256 2607 722 3095 conicto +1189 3584 2000 3584 conicto +2320 3584 2603 3504 conicto +2887 3424 3136 3264 conicto +end_ol grestore +gsave 13.847080 6.600000 translate 0.035278 -0.035278 scale +start_ol +1535 3200 moveto +1185 3200 1008 2840 conicto +832 2481 832 1759 conicto +832 1039 1008 679 conicto +1185 320 1535 320 conicto +1887 320 2063 679 conicto +2240 1039 2240 1759 conicto +2240 2481 2063 2840 conicto +1887 3200 1535 3200 conicto +1536 3584 moveto +2127 3584 2439 3116 conicto +2752 2649 2752 1759 conicto +2752 871 2439 403 conicto +2127 -64 1536 -64 conicto +944 -64 632 403 conicto +320 871 320 1759 conicto +320 2649 632 3116 conicto +944 3584 1536 3584 conicto +end_ol grestore +gsave 1.050000 1.975000 translate 0.035278 -0.035278 scale +start_ol +1792 3712 moveto +1792 3328 lineto +1369 3328 lineto +1139 3328 1049 3237 conicto +960 3147 960 2912 conicto +960 2688 lineto +1664 2688 lineto +1664 2368 lineto +960 2368 lineto +960 0 lineto +512 0 lineto +512 2368 lineto +64 2368 lineto +64 2688 lineto +512 2688 lineto +512 2864 lineto +512 3307 718 3509 conicto +925 3712 1374 3712 conicto +1792 3712 lineto +end_ol grestore +gsave 1.274788 1.975000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 1.679402 1.975000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 2.084016 1.975000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 2.436185 1.975000 translate 0.035278 -0.035278 scale +start_ol +1696 3047 moveto +1042 1280 lineto +2352 1280 lineto +1696 3047 lineto +1424 3520 moveto +1970 3520 lineto +3328 0 lineto +2827 0 lineto +2502 896 lineto +897 896 lineto +572 0 lineto +64 0 lineto +1424 3520 lineto +end_ol grestore +gsave 7.100000 2.025000 translate 0.035278 -0.035278 scale +start_ol +1792 3712 moveto +1792 3328 lineto +1369 3328 lineto +1139 3328 1049 3237 conicto +960 3147 960 2912 conicto +960 2688 lineto +1664 2688 lineto +1664 2368 lineto +960 2368 lineto +960 0 lineto +512 0 lineto +512 2368 lineto +64 2368 lineto +64 2688 lineto +512 2688 lineto +512 2864 lineto +512 3307 718 3509 conicto +925 3712 1374 3712 conicto +1792 3712 lineto +end_ol grestore +gsave 7.324788 2.025000 translate 0.035278 -0.035278 scale +start_ol +448 1040 moveto +448 2688 lineto +896 2688 lineto +896 1057 lineto +896 689 1042 504 conicto +1188 320 1481 320 conicto +1832 320 2036 541 conicto +2240 763 2240 1145 conicto +2240 2688 lineto +2688 2688 lineto +2688 0 lineto +2240 0 lineto +2240 384 lineto +2081 157 1870 46 conicto +1660 -64 1382 -64 conicto +923 -64 685 217 conicto +448 499 448 1040 conicto +end_ol grestore +gsave 7.729402 2.025000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 8.134016 2.025000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 8.486185 2.025000 translate 0.035278 -0.035278 scale +start_ol +960 1728 moveto +960 384 lineto +1696 384 lineto +2071 384 2251 550 conicto +2432 716 2432 1057 conicto +2432 1401 2251 1564 conicto +2071 1728 1696 1728 conicto +960 1728 lineto +960 3136 moveto +960 2112 lineto +1639 2112 lineto +1975 2112 2139 2238 conicto +2304 2365 2304 2624 conicto +2304 2881 2139 3008 conicto +1975 3136 1639 3136 conicto +960 3136 lineto +448 3520 moveto +1673 3520 lineto +2222 3520 2519 3300 conicto +2816 3080 2816 2674 conicto +2816 2360 2658 2174 conicto +2500 1989 2193 1943 conicto +2549 1866 2746 1621 conicto +2944 1376 2944 1009 conicto +2944 526 2625 263 conicto +2306 0 1718 0 conicto +448 0 lineto +448 3520 lineto +end_ol grestore +gsave 11.500000 1.950000 translate 0.035278 -0.035278 scale +start_ol +2368 2560 moveto +2368 2176 lineto +2180 2272 1991 2320 conicto +1803 2368 1611 2368 conicto +1180 2368 942 2099 conicto +704 1830 704 1344 conicto +704 858 942 589 conicto +1180 320 1611 320 conicto +1803 320 1991 368 conicto +2180 416 2368 512 conicto +2368 128 lineto +2184 32 1987 -16 conicto +1791 -64 1569 -64 conicto +966 -64 611 316 conicto +256 697 256 1344 conicto +256 2000 615 2376 conicto +974 2752 1598 2752 conicto +1801 2752 1994 2704 conicto +2187 2656 2368 2560 conicto +end_ol grestore +gsave 11.852169 1.950000 translate 0.035278 -0.035278 scale +start_ol +1473 2368 moveto +1117 2368 910 2094 conicto +704 1820 704 1344 conicto +704 868 909 594 conicto +1115 320 1473 320 conicto +1827 320 2033 595 conicto +2240 870 2240 1344 conicto +2240 1816 2033 2092 conicto +1827 2368 1473 2368 conicto +1472 2752 moveto +2040 2752 2364 2378 conicto +2688 2005 2688 1344 conicto +2688 685 2364 310 conicto +2040 -64 1472 -64 conicto +902 -64 579 310 conicto +256 685 256 1344 conicto +256 2005 579 2378 conicto +902 2752 1472 2752 conicto +end_ol grestore +gsave 12.244298 1.950000 translate 0.035278 -0.035278 scale +start_ol +2176 2304 moveto +2176 3712 lineto +2624 3712 lineto +2624 0 lineto +2176 0 lineto +2176 384 lineto +2040 157 1832 46 conicto +1624 -64 1332 -64 conicto +855 -64 555 324 conicto +256 712 256 1344 conicto +256 1976 555 2364 conicto +855 2752 1332 2752 conicto +1624 2752 1832 2641 conicto +2040 2531 2176 2304 conicto +704 1344 moveto +704 865 900 592 conicto +1096 320 1439 320 conicto +1782 320 1979 592 conicto +2176 865 2176 1344 conicto +2176 1823 1979 2095 conicto +1782 2368 1439 2368 conicto +1096 2368 900 2095 conicto +704 1823 704 1344 conicto +end_ol grestore +gsave 12.651417 1.950000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 13.046043 1.950000 translate 0.035278 -0.035278 scale +start_ol +end_ol grestore +gsave 13.248350 1.950000 translate 0.035278 -0.035278 scale +start_ol +2112 2560 moveto +2112 2176 lineto +1932 2272 1738 2320 conicto +1544 2368 1336 2368 conicto +1020 2368 862 2269 conicto +704 2170 704 1972 conicto +704 1821 814 1735 conicto +925 1649 1260 1571 conicto +1403 1538 lineto +1857 1438 2048 1255 conicto +2240 1072 2240 744 conicto +2240 371 1954 153 conicto +1668 -64 1167 -64 conicto +958 -64 732 -16 conicto +506 32 256 128 conicto +256 576 lineto +491 448 719 384 conicto +947 320 1170 320 conicto +1470 320 1631 425 conicto +1792 531 1792 722 conicto +1792 900 1678 994 conicto +1564 1089 1177 1177 conicto +1032 1212 lineto +621 1298 438 1476 conicto +256 1654 256 1964 conicto +256 2341 520 2546 conicto +784 2752 1269 2752 conicto +1509 2752 1721 2704 conicto +1933 2656 2112 2560 conicto +end_ol grestore +gsave 13.580535 1.950000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 13.975161 1.950000 translate 0.035278 -0.035278 scale +start_ol +2176 1375 moveto +2176 1848 1982 2108 conicto +1789 2368 1439 2368 conicto +1091 2368 897 2108 conicto +704 1848 704 1375 conicto +704 904 897 644 conicto +1091 384 1439 384 conicto +1789 384 1982 644 conicto +2176 904 2176 1375 conicto +2624 347 moveto +2624 -347 2323 -685 conicto +2023 -1024 1404 -1024 conicto +1174 -1024 971 -992 conicto +768 -961 576 -896 conicto +576 -448 lineto +766 -546 951 -593 conicto +1137 -640 1329 -640 conicto +1754 -640 1965 -415 conicto +2176 -190 2176 264 conicto +2176 448 lineto +2042 223 1833 111 conicto +1624 0 1332 0 conicto +848 0 552 376 conicto +256 753 256 1375 conicto +256 1999 552 2375 conicto +848 2752 1332 2752 conicto +1624 2752 1833 2640 conicto +2042 2529 2176 2304 conicto +2176 2688 lineto +2624 2688 lineto +2624 347 lineto +end_ol grestore +gsave 14.382280 1.950000 translate 0.035278 -0.035278 scale +start_ol +2549 2204 moveto +2714 2485 2942 2618 conicto +3171 2752 3482 2752 conicto +3899 2752 4125 2464 conicto +4352 2177 4352 1646 conicto +4352 0 lineto +3904 0 lineto +3904 1632 lineto +3904 2006 3769 2187 conicto +3634 2368 3356 2368 conicto +3017 2368 2820 2146 conicto +2624 1925 2624 1542 conicto +2624 0 lineto +2176 0 lineto +2176 1632 lineto +2176 2008 2041 2188 conicto +1906 2368 1624 2368 conicto +1289 2368 1092 2145 conicto +896 1922 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1046 2534 1255 2643 conicto +1465 2752 1753 2752 conicto +2044 2752 2247 2611 conicto +2451 2471 2549 2204 conicto +end_ol grestore +gsave 15.004191 1.950000 translate 0.035278 -0.035278 scale +start_ol +2752 1480 moveto +2752 1280 lineto +704 1280 lineto +733 811 978 565 conicto +1223 320 1660 320 conicto +1914 320 2152 384 conicto +2390 448 2624 576 conicto +2624 192 lineto +2388 67 2140 1 conicto +1893 -64 1639 -64 conicto +1001 -64 628 309 conicto +256 683 256 1320 conicto +256 1979 613 2365 conicto +970 2752 1576 2752 conicto +2120 2752 2436 2410 conicto +2752 2068 2752 1480 conicto +2304 1600 moveto +2299 1950 2099 2159 conicto +1900 2368 1572 2368 conicto +1200 2368 976 2166 conicto +753 1964 719 1597 conicto +2304 1600 lineto +end_ol grestore +gsave 15.398817 1.950000 translate 0.035278 -0.035278 scale +start_ol +2688 1646 moveto +2688 0 lineto +2240 0 lineto +2240 1632 lineto +2240 2001 2093 2184 conicto +1947 2368 1654 2368 conicto +1302 2368 1099 2146 conicto +896 1925 896 1542 conicto +896 0 lineto +448 0 lineto +448 2688 lineto +896 2688 lineto +896 2304 lineto +1053 2529 1266 2640 conicto +1479 2752 1757 2752 conicto +2217 2752 2452 2471 conicto +2688 2191 2688 1646 conicto +end_ol grestore +gsave 15.803431 1.950000 translate 0.035278 -0.035278 scale +start_ol +896 3456 moveto +896 2688 lineto +1792 2688 lineto +1792 2368 lineto +896 2368 lineto +896 902 lineto +896 572 984 478 conicto +1073 384 1345 384 conicto +1792 384 lineto +1792 0 lineto +1345 0 lineto +836 0 642 194 conicto +448 389 448 902 conicto +448 2368 lineto +128 2368 lineto +128 2688 lineto +448 2688 lineto +448 3456 lineto +896 3456 lineto +end_ol grestore +showpage diff -r 68928e796ed8 -r 2fd0f505cc68 paper/fig/cbcreturn.pdf Binary file paper/fig/cbcreturn.pdf has changed diff -r 68928e796ed8 -r 2fd0f505cc68 paper/fig/cbcreturn.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/fig/cbcreturn.xbb Fri Feb 05 17:48:13 2016 +0900 @@ -0,0 +1,8 @@ +%%Title: ./fig/cbcreturn.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 0 0 426 318 +%%HiResBoundingBox: 0.000000 0.000000 426.000000 318.000000 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Mon Feb 17 15:18:33 2014 + diff -r 68928e796ed8 -r 2fd0f505cc68 paper/fig/codesegment.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/fig/codesegment.graffle Fri Feb 05 17:48:13 2016 +0900 @@ -0,0 +1,1018 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle + 139.18.0.187838 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559.20001220703125, 782.79998779296875}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2011-11-12 11:03:25 +0000 + Creator + Nobuyasu Oshiro + DisplayScale + 1 0/72 in = 1.0000 in + GraphDocumentVersion + 8 + GraphicsList + + + Bounds + {{315.5, 89.625}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 32 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0 + + + + Bounds + {{315.5, 171}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 31 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0 + + + + Bounds + {{190.20312000000001, 167}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 30 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0 + + + + Bounds + {{405.93358999999998, 125}, {54, 18}} + Class + ShapedGraphic + ID + 29 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + ID + 28 + Points + + {412.93358999999998, 143.02043} + {462.43358999999998, 143} + + Style + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.4285709857940674 + Legacy + + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{90, 126}, {54, 18}} + Class + ShapedGraphic + ID + 27 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0 + + + + Bounds + {{252, 134.3125}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 26 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 3 + + ID + 23 + Points + + {97, 144.03550999999999} + {146.49998746981748, 144.01507110982496} + + Style + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.4285709857940674 + Legacy + + TailArrow + 0 + TailScale + 0.5 + + + + + Class + LineGraphic + Head + + ID + 5 + + ID + 11 + Points + + {307.08334974209447, 98.992681580751722} + {348.45143717244423, 125.9771788118144} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 1 + + + + Class + LineGraphic + Head + + ID + 5 + + ID + 10 + Points + + {307.26186035494931, 188.16336416086213} + {348.23813925371286, 161.83663549730926} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 4 + + + + Class + LineGraphic + Head + + ID + 4 + + ID + 9 + Points + + {210.7618557053124, 161.83663369834431} + {251.73814196284329, 188.16336833929338} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 3 + + + + Class + LineGraphic + Head + + ID + 1 + + ID + 8 + Points + + {210.57342004857193, 125.99870008392107} + {251.92658045882592, 99.001300352172606} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 3 + + + + Class + LineGraphic + Head + + ID + 4 + + ID + 7 + Points + + {293.5556962717904, 106.37834049073271} + {315.5, 146} + {294.53436892191536, 180.94271846347439} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 1 + + + + Class + LineGraphic + Head + + ID + 1 + + ID + 6 + Points + + {263.99039783812128, 181.10804591303423} + {239, 141} + {262.95578717906915, 105.50994491989755} + + Style + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 4 + + + + Bounds + {{340, 117}, {72, 54}} + Class + ShapedGraphic + ID + 5 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 csD} + VerticalPad + 0 + + + + Bounds + {{243.5, 179}, {72, 54}} + Class + ShapedGraphic + ID + 4 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 csC} + VerticalPad + 0 + + + + Bounds + {{147, 117}, {72, 54}} + Class + ShapedGraphic + ID + 3 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 csA} + VerticalPad + 0 + + + + Bounds + {{243.5, 54}, {72, 54}} + Class + ShapedGraphic + ID + 1 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 csB} + VerticalPad + 0 + + + + Bounds + {{197.56640999999999, 98.625}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 25 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1265 +\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2014-02-04 06:54:28 +0000 + Modifier + utah + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595.20001220703125, 841.79998779296875} + + NSPrintReverseOrientation + + int + 0 + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + + name + Canvas 1 + + + Frame + {{398, 45}, {693, 938}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{0, 0}, {558, 783}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff -r 68928e796ed8 -r 2fd0f505cc68 paper/fig/codesegment2.pdf Binary file paper/fig/codesegment2.pdf has changed diff -r 68928e796ed8 -r 2fd0f505cc68 paper/fig/gotowithenv.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/fig/gotowithenv.graffle Fri Feb 05 17:48:13 2016 +0900 @@ -0,0 +1,737 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle6 + 169.5.0.253125 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559.20001220703125, 782.79998779296875}} + Class + SolidGraphic + ID + 2 + Style + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2011-11-12 11:03:25 +0000 + Creator + Nobuyasu Oshiro + DisplayScale + 1 in = 1.00000 in + GraphDocumentVersion + 12 + GraphicsList + + + Bounds + {{250.2973325621349, 270.31534740935825}, {74, 47}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 47 + Line + + ID + 46 + Position + 0.19938554542155384 + RotationType + 0 + + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs32 \cf0 goto ret()\ +return 1;} + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + Head + + ID + 44 + + ID + 46 + Points + + {315, 243} + {216, 342} + {126, 207} + {99, 288} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + + + Bounds + {{189, 234}, {36, 72}} + Class + ShapedGraphic + ID + 45 + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs32 \cf0 B1} + + + + Bounds + {{81, 234}, {36, 108}} + Class + ShapedGraphic + ID + 44 + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs32 \cf0 A1} + + + + Bounds + {{226.27932242437555, 164.6841506727356}, {65, 27}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Size + 14 + + ID + 43 + Line + + ID + 42 + Position + 0.40049922466278076 + RotationType + 0 + + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs28 \cf0 goto cs()} + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + Head + + ID + 40 + + ID + 42 + Points + + {207, 207.51768167607159} + {244, 207.51768167607159} + {288, 108.51768167607159} + {313.0625, 189} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + + + Bounds + {{279, 42}, {71.0625, 30}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 41 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs32 \cf0 cs} + + + + Bounds + {{295.0625, 135}, {36, 108}} + Class + ShapedGraphic + ID + 40 + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs32 \cf0 C0} + + + + Bounds + {{120.56351716628797, 140.72421097582617}, {58, 27}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Size + 14 + + ID + 39 + Line + + ID + 38 + Position + 0.40049922588964176 + RotationType + 0 + + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs28 \cf0 func B()} + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 12 + + Head + + ID + 36 + + ID + 38 + Points + + {99, 180} + {136, 180} + {180, 81} + {207, 153} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + + + Bounds + {{172.9375, 42}, {71.0625, 30}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 37 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs32 \cf0 funcB} + + + + Bounds + {{189, 99}, {36, 108}} + Class + ShapedGraphic + ID + 36 + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs32 \cf0 B0} + + + + Bounds + {{64.9375, 42}, {71.0625, 30}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 34 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\deftab720 +\pard\pardeftab720\qc\partightenfactor0 + +\f0\fs32 \cf0 funcA} + + + + Bounds + {{81, 72}, {36, 108}} + Class + ShapedGraphic + ID + 33 + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340 +{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs32 \cf0 A0} + + + + GridInfo + + SnapsToGrid + YES + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoLineLength + 0.20000000298023224 + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2016-02-05 08:22:06 +0000 + Modifier + utah + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595.20001220703125, 841.79998779296875} + + NSPrintReverseOrientation + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Expanded_Canvases + + Frame + {{398, 45}, {989, 938}} + ShowInfo + + ShowRuler + + Sidebar + + SidebarWidth + 200 + TopSlabHeight + 250 + VisibleRegion + {{0, 0}, {475, 780}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff -r 68928e796ed8 -r 2fd0f505cc68 paper/fig/gotowithenv.pdf Binary file paper/fig/gotowithenv.pdf has changed diff -r 68928e796ed8 -r 2fd0f505cc68 paper/introduciton.tex --- a/paper/introduciton.tex Tue Jan 19 18:24:05 2016 +0900 +++ b/paper/introduciton.tex Fri Feb 05 17:48:13 2016 +0900 @@ -1,7 +1,7 @@ \chapter{研究目的} -プログラミングに用いられる単位として関数、クラス、オブジェクト等が存在するが、これらは容易に分割、結合することは出来ない。また、アセンブリ言語は分割、結合を行うことは容易であるが、これのみでプログラムを記述することは困難である。 +プログラミングに用いられる単位として関数, クラス, オブジェクト等が存在するが, これらは容易に分割, 結合することは出来ない. また, アセンブリ言語は分割, 結合を行うことは容易であるが, これのみでプログラムを記述することは困難である. -これらの問題を解決するべく、設計された単位が code segment, data segment である。code segment, data segment は分割、結合を容易に行うことのできる処理、データの単位として設計されたものであり、並列プログラミングフレームワーク Cerium\cite{cerium}, 分散ネットワークフレームワーク Alice\cite{akamine:2011a}, プログラミング言語 Continuation based C (CbC)\cite{simabukuro:2000} はこれらの単位を用いている。 +これらの問題を解決するべく, 設計された単位が code segment, data segment である. code segment, data segment は分割, 結合を容易に行うことのできる処理, データの単位として設計されたものであり, 並列プログラミングフレームワーク Cerium\cite{cerium}, 分散ネットワークフレームワーク Alice\cite{akamine:2011a}, プログラミング言語 Continuation based C (CbC)\cite{simabukuro:2000} はこれらの単位を用いている. -CbC のコンパイラは micro-c をベースにしたものと GCC をベースにしたものに加え、2014年の研究で LLVM, clang をベースにしたものが存在する。本研究では、LLVM, clang をベースとした CbC コンパイラにさらなる最適化、機能の追加、Gears OS の記述をサポートする機能の設計を行った。 +CbC のコンパイラは micro-c をベースにしたものと GCC をベースにしたものに加え, 2014年の研究で LLVM, clang をベースにしたものが存在する. 本研究では, LLVM, clang をベースとした CbC コンパイラにさらなる最適化, 機能の追加, Gears OS の記述をサポートする機能の設計を行った. \pagenumbering{arabic} diff -r 68928e796ed8 -r 2fd0f505cc68 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed diff -r 68928e796ed8 -r 2fd0f505cc68 paper/master_paper.tex --- a/paper/master_paper.tex Tue Jan 19 18:24:05 2016 +0900 +++ b/paper/master_paper.tex Fri Feb 05 17:48:13 2016 +0900 @@ -7,9 +7,9 @@ \usepackage{comment} %\input{dummy.tex} %% font -\jtitle{Code Segment を用いるプログラミング言語の LLVM, clang上の実装} +\jtitle{LLVM, Clang 上の Continuation based C コンパイラの改良} %\etitle{supporting multiplatform of parallel programming framework} -\etitle{Implementating Code Segment based language on LLVM and Clang} +\etitle{Improvement of Continuation based C compiler on LLVM and Clang} \year{平成27年度} \affiliation{\center% \includegraphics[clip,keepaspectratio,width=.15\textwidth] @@ -26,7 +26,7 @@ \end{minipage}} \markleftfoot{% 左下に挿入 \begin{minipage}{.8\textwidth} - Code Segment を用いるプログラミング言語の LLVM, clang上の実装 + LLVM, Clang 上の Continuation based C コンパイラの改良 \end{minipage}} \newcommand\figref[1]{図 \ref{fig:#1}}