# HG changeset patch # User tobaru # Date 1519098339 -32400 # Node ID 612de2705907df97c8de51cf967259bf57b42153 # Parent cca1d0bf491c0d9880b3779d004a4d809802ffcf 卒論予稿 diff -r cca1d0bf491c -r 612de2705907 paper/main.aux --- a/paper/main.aux Sat Feb 17 19:34:35 2018 +0900 +++ b/paper/main.aux Tue Feb 20 12:45:39 2018 +0900 @@ -1,53 +1,59 @@ \relax -\@writefile{toc}{\contentsline {chapter}{\numberline {第1章}(序章)}{1}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第1章}RaspberryPi上でのGearsOS}{2}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{chap:Introduction}{{1}{1}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第2章}RaspberryPi上でのGearsOS}{2}} -\@writefile{lof}{\addvspace {10\p@ }} -\@writefile{lot}{\addvspace {10\p@ }} -\newlabel{chap:rpiGears}{{2}{2}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第3章}RaspberryPi上での実装}{3}} +\newlabel{chap:rpiGears}{{1}{2}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第2章}RaspberryPi上での実装}{3}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{chap:rpi}{{3}{3}} -\@writefile{toc}{\contentsline {section}{\numberline {3.1}CbCのmake時間}{3}} -\@writefile{toc}{\contentsline {section}{\numberline {3.2}T図形}{3}} -\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces T図形の例}}{4}} -\newlabel{fig:examples}{{3.1}{4}} -\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Raspberry Pi}}{4}} -\newlabel{images:RaspberryPi}{{3.2}{4}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第4章}CrossCompile}{5}} +\newlabel{chap:rpi}{{2}{3}} +\@writefile{toc}{\contentsline {section}{\numberline {2.1}CbCのmake時間}{3}} +\@writefile{lot}{\contentsline {table}{\numberline {2.1}{\ignorespaces make時間の比較}}{3}} +\newlabel{tab:make_time}{{2.1}{3}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第3章}CrossCompile}{4}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{chap:CrossCompile}{{4}{5}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第5章}OSX}{6}} +\newlabel{chap:CrossCompile}{{3}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {3.1}CrossCompile}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {3.2}xv6}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {3.3}T図形}{4}} +\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces T図形の例}}{5}} +\newlabel{fig:examples}{{3.1}{5}} +\@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Raspberry Pi}}{5}} +\newlabel{images:RaspberryPi}{{3.2}{5}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第4章}OSX}{6}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{chap:OSX}{{5}{6}} -\@writefile{toc}{\contentsline {section}{\numberline {5.1}LLVM}{6}} -\newlabel{OSXCrossCompile}{{5.1}{6}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.1}CrossCompileの例}{6}} -\newlabel{OSXfile}{{5.2}{6}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.2}生成したファイル}{6}} -\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces OSX}}{7}} -\newlabel{fig:OSX}{{5.1}{7}} -\@writefile{toc}{\contentsline {section}{\numberline {5.2}GCC}{7}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}Linux}{8}} +\newlabel{chap:OSX}{{4}{6}} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}LLVM}{6}} +\newlabel{OSXCrossCompile}{{4.1}{6}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {4.1}CrossCompileの例}{6}} +\newlabel{OSXfile}{{4.2}{6}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {4.2}生成したファイル}{6}} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}GCC}{6}} +\@writefile{toc}{\contentsline {section}{\numberline {4.3}xv6}{7}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces OSX}}{7}} +\newlabel{fig:OSX}{{4.1}{7}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第5章}Linux}{8}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@writefile{toc}{\contentsline {section}{\numberline {6.1}LLVM}{8}} -\@writefile{toc}{\contentsline {section}{\numberline {6.2}GCC}{8}} -\@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces OSX Linux VM}}{8}} -\newlabel{fig:OSX_Linux_VM}{{6.1}{8}} -\newlabel{LinuxCrossCompile}{{6.1}{9}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {6.1}LinuxでのCrossCompile}{9}} -\@writefile{toc}{\contentsline {chapter}{\numberline {第7章}今後の課題}{10}} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}LLVM}{8}} +\newlabel{LinuxCCrossCompile}{{5.1}{8}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.1}Linux上でC言語ファイルのCrossCompile}{8}} +\newlabel{LinuxLLVMmake}{{5.2}{9}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.2}Linux上のLLVM makeファイル}{9}} +\@writefile{toc}{\contentsline {section}{\numberline {5.2}GCC}{10}} +\newlabel{Linux_GCC_CrossCompile}{{5.3}{10}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.3}LinuxでのGCC CrossCompile}{10}} +\@writefile{toc}{\contentsline {section}{\numberline {5.3}xv6}{11}} +\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces OSX Linux VM}}{11}} +\newlabel{fig:OSX_Linux_VM}{{5.1}{11}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}今後の課題}{12}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{chap:Task}{{7}{10}} -\@writefile{toc}{\contentsline {chapter}{謝辞}{11}} -\newlabel{chap:Acknowledgments}{{7}{11}} -\@writefile{toc}{\contentsline {chapter}{参考文献}{12}} -\newlabel{chap:References}{{7}{12}} -\@writefile{toc}{\contentsline {chapter}{付録}{13}} +\newlabel{chap:Task}{{6}{12}} +\@writefile{toc}{\contentsline {chapter}{謝辞}{13}} +\newlabel{chap:Acknowledgments}{{6}{13}} +\@writefile{toc}{\contentsline {chapter}{参考文献}{14}} +\newlabel{chap:References}{{6}{14}} +\@writefile{toc}{\contentsline {chapter}{付録}{15}} diff -r cca1d0bf491c -r 612de2705907 paper/main.lof --- a/paper/main.lof Sat Feb 17 19:34:35 2018 +0900 +++ b/paper/main.lof Tue Feb 20 12:45:39 2018 +0900 @@ -1,11 +1,10 @@ \addvspace {10\p@ } \addvspace {10\p@ } \addvspace {10\p@ } -\contentsline {figure}{\numberline {3.1}{\ignorespaces T図形の例}}{4} -\contentsline {figure}{\numberline {3.2}{\ignorespaces Raspberry Pi}}{4} -\addvspace {10\p@ } +\contentsline {figure}{\numberline {3.1}{\ignorespaces T図形の例}}{5} +\contentsline {figure}{\numberline {3.2}{\ignorespaces Raspberry Pi}}{5} \addvspace {10\p@ } -\contentsline {figure}{\numberline {5.1}{\ignorespaces OSX}}{7} +\contentsline {figure}{\numberline {4.1}{\ignorespaces OSX}}{7} \addvspace {10\p@ } -\contentsline {figure}{\numberline {6.1}{\ignorespaces OSX Linux VM}}{8} +\contentsline {figure}{\numberline {5.1}{\ignorespaces OSX Linux VM}}{11} \addvspace {10\p@ } diff -r cca1d0bf491c -r 612de2705907 paper/main.log --- a/paper/main.log Sat Feb 17 19:34:35 2018 +0900 +++ b/paper/main.log Tue Feb 20 12:45:39 2018 +0900 @@ -1,4 +1,4 @@ -This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.5.28) 15 FEB 2018 18:54 +This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.5.28) 19 FEB 2018 20:16 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -179,11 +179,11 @@ LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <12> not available (Font) Font shape `JY1/gt/m/n' tried instead on input line 1. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <12> on input line 4. +(Font) <12> on input line 3. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <8> on input line 4. +(Font) <8> on input line 3. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <6> on input line 4. +(Font) <6> on input line 3. ) \tf@toc=\write3 \openout3 = `main.toc'. @@ -200,66 +200,71 @@ \tf@lot=\write5 \openout5 = `main.lot'. - [3 + [1 ] 第 1 章 -[1 +[2 ] 第 2 章 -[2 +LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <17.28> not available +(Font) Font shape `JT1/gt/m/n' tried instead on input line 210. +LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <17.28> not available +(Font) Font shape `JY1/gt/m/n' tried instead on input line 210. +[3 ] 第 3 章 -LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <17.28> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 207. -LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <17.28> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 207. File: images/examples_2.pdf Graphic file (type pdf) - [3 + [4 ] File: images/RaspberryPi_2.pdf Graphic file (type pdf) - [4] + [5] 第 4 章 -[5 - -] -第 5 章 LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <10> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 298. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 331. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <10> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 298. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 331. LaTeX Font Info: Font shape `OT1/cmtt/bx/n' in size <10> not available -(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 298. +(Font) Font shape `OT1/cmtt/m/n' tried instead on input line 331. [6 ] File: images/OSX_2.pdf Graphic file (type pdf) [7] -第 6 章 -File: images/OSX_Linux_VM_2.pdf Graphic file (type pdf) - [8 +第 5 章 +LaTeX Font Info: Try loading font information for OMS+cmr on input line 385. -] [9] -第 7 章 -[10 +(/usr/local/texlive/2016/texmf-dist/tex/latex/base/omscmr.fd +File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 385. + [8 -] [11 +] [9] [10] +File: images/OSX_Linux_VM_2.pdf Graphic file (type pdf) -] [12 + [11] +第 6 章 +[12 ] [13 +] [14 + +] [15 + ] (./main.aux) ) Here is how much of TeX's memory you used: - 2606 strings out of 493693 - 35503 string characters out of 6149787 - 162239 words of memory out of 5000000 - 6139 multiletter control sequences out of 15000+600000 + 2673 strings out of 493693 + 36322 string characters out of 6149787 + 231239 words of memory out of 5000000 + 6203 multiletter control sequences out of 15000+600000 14788 words of font info for 59 fonts, out of 8000000 for 9000 929 hyphenation exceptions out of 8191 - 27i,8n,43p,326b,1644s stack positions out of 5000i,500n,10000p,200000b,80000s + 27i,8n,43p,326b,1133s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on main.dvi (17 pages, 18176 bytes). +Output written on main.dvi (18 pages, 30196 bytes). diff -r cca1d0bf491c -r 612de2705907 paper/main.lot --- a/paper/main.lot Sat Feb 17 19:34:35 2018 +0900 +++ b/paper/main.lot Tue Feb 20 12:45:39 2018 +0900 @@ -1,7 +1,7 @@ +\addvspace {10\p@ } +\addvspace {10\p@ } +\contentsline {table}{\numberline {2.1}{\ignorespaces make時間の比較}}{3} \addvspace {10\p@ } \addvspace {10\p@ } \addvspace {10\p@ } \addvspace {10\p@ } -\addvspace {10\p@ } -\addvspace {10\p@ } -\addvspace {10\p@ } diff -r cca1d0bf491c -r 612de2705907 paper/main.pdf Binary file paper/main.pdf has changed diff -r cca1d0bf491c -r 612de2705907 paper/main.synctex.gz Binary file paper/main.synctex.gz has changed diff -r cca1d0bf491c -r 612de2705907 paper/main.tex --- a/paper/main.tex Sat Feb 17 19:34:35 2018 +0900 +++ b/paper/main.tex Tue Feb 20 12:45:39 2018 +0900 @@ -40,7 +40,7 @@ \icon{ \includegraphics[width=80mm,bb=0 0 595 642]{fig/ryukyu.pdf} %%元は 642じゃなくて842 } -\year{平成30年度 卒業論文} +\year{平成29年度 卒業論文} \belongto{琉球大学工学部情報工学科} \author{145759E 桃原 優 \\ 指導教員 {河野 真治} } @@ -74,13 +74,13 @@ -\chapter{(序章)} -\pagenumbering{arabic} -問題提起\\ -研究目的はかかない +% \chapter{(序章)} + \pagenumbering{arabic} +% 問題提起\\ +% 研究目的はかかない -\label{chap:Introduction} +% \label{chap:Introduction} % @@ -168,8 +168,11 @@ % を持っている。Gear の特徴として処理やデータの構造が Code Gear、Data Gear % に閉じている事にある。これにより、実行時間、メモリ使用量などを予測可能なものにすることができる。 + \chapter{RaspberryPi上でのGearsOS} +% CbCとGearsOSの章削ったので、文章気をつける +% こっちが概要っぽい? 当研究室では CbC(Continuation base C) とCbC を用いて実装する GearsOS の研究を行っている。 @@ -194,7 +197,7 @@ CrossCompile を行う方法を提案する。 - +% compiler-rt 書く \label{chap:rpiGears} @@ -207,12 +210,15 @@ \section{CbCのmake時間} % Raspberry Pi の OS である Raspbian ではメモリが 256MB なので % Raspberry Pi 上で直接 CbC をコンパイルするには時間がかかる。qemu によるメモリの拡張もできないので、別の手法で Raspberry Pi 上に CbC を実装する方が好ましい。 -Raspberry Pi 1 のメモリは 256MB と小さいため、 CbC をコンパイルすることができない。 -Raspberry Pi 3 だとメモリは 1GB あり CbC をコンパイルできるが、時間がかかる。 +Raspberry Pi 1 のメモリは 256MB と小さいため、 CbC をmakeすることができない。 +Raspberry Pi 3 だとメモリは 1GB あり CbC をmakeできるが、時間がかかる。 -学科のサーバの一つでLinux環境であるDALMORE +make時間の比較として研究室のサーバでメモリ16GBのfireflyと学科のサーバの一つでLinux環境であるメモリ756GBのDALMOREを用いる。 +なお、fireflyとDALMOREではGoogleによって開発されたbuildシステムのninja-buildを用いてmakeを行なった。その結果を表\ref{tab:make_time}に示す。 + +% ninja \begin{table}[htb] \centering @@ -221,15 +227,45 @@ 環境(メモリ) & 時間 & 比較 \\ \hline \hline RaspberryPi(1GB) & 15時間11分06秒 & 1.00倍 \\ \hline OSX(16GB) & 2時間16分06秒 & 6.69倍 \\ \hline - Linux(500GB) & 2分26秒 & 374.42倍 \\ \hline + Linux(756GB) & 2分26秒 & 374.42倍 \\ \hline \end{tabular} } + \caption{make時間の比較} + \label{tab:make_time} \end{table} % qemuによる拡張ができない原因 +\break + + + +\chapter{CrossCompile} +\label{chap:CrossCompile} + +\section{CrossCompile} + CrossCompile を行うことで make 時間の問題を解決する方法がある。 +% CrossCompile とは、別の OS で実行可能なコードを生成するコンパイルの手法である。 +% つまり、OSX であらかじめ Raspberry Pi で CbC が動くように CrossCompile を行い、そのコードを Raspberry Pi に移せばよい。\\ + CrossCompile とは、別の OS で実行可能なコードを生成するコンパイルの手法である。 +Raspbian 以外の OS 環境であらかじめ Raspberry Pi で CbC が動くように CrossCompile を行い、そのコードを Raspberry Pi に移す事で、実行できるようになる。 + +% この研究でOSX とLinuxそれぞれで LLVMとGCCのCrossCompileを行う説明 + +Raspberry Pi の OS である Rasbian は qemu によるメモリの拡張もできないので、 +別の手法で Raspberry Pi 上に CbC を実装する方が好ましい。 + + +\section{xv6} + マサチューセッツ工科大の大学院生向け講義の教材として使うために、UNIX V6 という OS を + ANSI-C に書き換え、x86に移植したXv6 OS である。 +Xv6 は Raspberry Pi に移植する事ができる。ANSI-C で書かれている Xv6 を CbC に書き直す事で、 +Raspberry Pi で CbC を動かせるようになる。 + + + \section{T図形} CbC を Raspberry Pi で動かすためのアプローチの手法を、I と T の形をした @@ -250,7 +286,16 @@ \end{figure} \break -Raspberry Pi でコンパイルを行うまでの過程を、図\ref{images:RaspberryPi}に示す。 + + +% xv6で書き直す場合 + + +Raspberry Pi は ARM のコードを生成する。CbCはCによって記述されているため、Cから ARM.o を生成し、ARM.o から a.out を出力する。 +Raspberry Pi 上でxv6を実装し、cbcからa.outを出力するまでの過程を図\ref{images:RaspberryPi}に示す。 + + +% 図の説明詳しく \begin{figure}[htpb] \begin{center} @@ -261,22 +306,6 @@ \end{figure} -\break - - - -\chapter{CrossCompile} -\label{chap:CrossCompile} -OSX 上で CrossCompile する事で make 時間の問題を解決する方法がある。 -% CrossCompile とは、別の OS で実行可能なコードを生成するコンパイルの手法である。 -% つまり、OSX であらかじめ Raspberry Pi で CbC が動くように CrossCompile を行い、そのコードを Raspberry Pi に移せばよい。\\ - CrossCompile とは、別の OS で実行可能なコードを生成するコンパイルの手法である。 - - -% この研究でOSX とLinuxそれぞれで LLVMとGCCのCrossCompileを行う説明 - -Raspberry Pi の OS である Rasbian が qemu によるメモリの拡張もできないので、 -別の手法で Raspberry Pi 上に CbC を実装する方が好ましい。 \chapter{OSX} @@ -284,9 +313,13 @@ \section{LLVM} +% これはELFのコード吐いただけ + arm-linux-gnueabihf-gcc というツールチェーンを使用し、C で書かれたファイルを CrossCompile することで OSXで ARM のコードを生成できる事を確認した。その際のコマンドをリスト\ref{OSXCrossCompile}に、生成されたファイルにfileコマンドで調べた結果をリスト\ref{OSXfile}に示す。 + % arm-linux-gnueabihf-gcc がなにをするためのツールチェーンか詳しく書く + \begin{lstlisting}[frame=lrbt,label=OSXCrossCompile,caption={CrossCompileの例}] /usr/local/linaro/arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc -g -o hello hello.c \end{lstlisting} @@ -299,14 +332,24 @@ BuildID[sha1]=a78af9ba00197d52a8ed7cbac433b24360c57283, not stripped \end{lstlisting} +このファイルは Raspberry Pi 上で実行する事ができる。 + + +\section{GCC} + + \break +\section{xv6} +% 上のCrossCompileと別にxv6で実装する場合 + +OSX上でxv6を実装する場合、Cから mach-o のバイナリファイルが生成される。 この時、出力は mach-o になるので、mach-o の loader 作ることで CbC が動かせるようになる。 - まだ実装できていないが、OSX 上で行えるためコンパイルの速度向上が望める。 -OSX 上で コンパイルを行うまでの過程を、図\ref{fig:OSX}に示す。 + OSX 上で行えるためコンパイルの速度向上が望める。 +xv6を実装しCbCからa.outを出力するまでの過程を、図\ref{fig:OSX}に示す。 \begin{figure}[htpb] \begin{center} @@ -317,32 +360,118 @@ \end{figure} -\section{GCC} + \break \chapter{Linux} \section{LLVM} - -\section{GCC} - -CrossCompile と別に Linux 環境で CbC を動かした後に、Raspberry Pi に載せる手法がある。 - Linux の LLVM でコンパイルすることができれば elf のコードを書けるようになるので、 elf のloader を作る事で、CbC を動かすことができる。 + + +C言語で記述されたファイルからRaspberryPiで実行できるファイルを実行できるようにCrossCompileを行なった際のコマンドをCode\ref{LinuxCCrossCompile}に示す。 + + + + + \begin{lstlisting}[frame=lrbt,label=LinuxCCrossCompile,caption={Linux上でC言語ファイルのCrossCompile}] + ./bin/clang -target arm-linux-gnueabi -mfpu=neon-fp16 -marm -I /net/open/Linux/arm/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/include/ hello.c -c -mfloat-abi=hard +\end{lstlisting} + +コマンドの説明は次のようになる。 +\begin{itemize} + \item arm-linux-gnueabi は apt でインストールでき、/net/open/Linux/arm/ に展開される。-I オプションでそのディレクトリを読み込む。 + \item targetオプションでarm-linux-gnueabiを指定することで、armのコードを生成している。 + \item mfpu=neon-fp16 はARMv7の浮動小数点を有効にしている。 + \item marmでARMの命令セットをターゲットにしている。 +\end{itemize} + +\break + +また、make する際に、Cross環境を整える事でCompileする度にCode\ref{LinuxCCrossCompile}のようなコマンドを省略することができる。 +Makefile の一部をCode\ref{LinuxLLVMmake} に示す。 + + \begin{lstlisting}[frame=lrbt,label=LinuxLLVMmake,caption={Linux上のLLVM makeファイル}] + QEMU = qemu-system-arm + +include makefile.inc +CC = /usr/local/cbclang/bin/clang +AS = arm-linux-gnu-as +LD = arm-linux-gnu-ld +OBJCOPY = arm-linux-gnu-objcopy +OBJDUMP = arm-linux-gnu-objdump + +CFLAGS = -target armv6-arm-none-eabi -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -I. -I ../cbclang/arm -g -O0 + + +ASFLAGS = -target armv6-arm-none-eabi + +LIBGCC = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + \end{lstlisting} + +\begin{itemize} + \item CC はコンパイラで、すでにmakeしたCbCのディレクトリを指定している。 + \item ASはアセンブラ、LDはリンカーで、それぞれarm-linux-gnuを指定してあげればよい。 +% CFLAGS と ASFLAGSについても書く + \item CFLAGS + \item ASFLAGS +\end{itemize} + + +\break + + +\section{GCC} +% これもCrossCompileなので書き直す +% CrossCompile と別に Linux 環境で CbC を動かした後に、Raspberry Pi に載せる手法がある。 + + - また、Linux 用の gcc を CbC に書き直す際に、gcc7 に書き直せば linker がそのまま使えるので、 - Xv6 で動くようになる。 + Linux 用の gcc を CbC に書き直す際に、gcc7 に書き直せば linker がそのまま使えるので、 + xv6 で動くようになる。 - Xv6とは、マサチューセッツ工科大の大学院生向け講義の教材として使うために、UNIX V6 という OS を - ANSI-C に書き換え、x86に移植した OS である。 -Xv6 は Raspberry Pi に移植する事ができる。ANSI-C で書かれている Xv6 を CbC に書き直す事で、 -Raspberry Pi で CbC を動かせるようになる。 + + \begin{lstlisting}[frame=lrbt,label=Linux_GCC_CrossCompile,caption={LinuxでのGCC CrossCompile}] +QEMU = qemu-system-arm + +include makefile.inc +CC = arm-linux-gnu-gcc +AS = arm-linux-gnu-as +LD = arm-linux-gnu-ld +OBJCOPY = arm-linux-gnu-objcopy +OBJDUMP = arm-linux-gnu-objdump + +CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -I. -g -O0 + +ASFLAGS = + +LIBGCC = $(shell $(CC) -print-libgcc-file-name) + +LINK_BIN = $(call quiet-command,$(LD) $(LDFLAGS) \ + -T $(1) -o $(2) $(3) $(LIBS) -b binary $(4), " LINK $(TARGET_DIR)$@") - Linux 上 で LLVM がコンパイルできない原因はまだ分かってないが、 - メモリを上げる事でこの方法でもコンパイルの速度向上が望める。 -Linux 上で コンパイルを行うまでの過程を、図\ref{fig:OSX_Linux_VM}に示す。 +LINK_INIT = $(call quiet-command,$(LD) $(LDFLAGS) \ + $(1) -o $@.out $<, " LINK $(TARGET_DIR)$@") +OBJCOPY_INIT = $(call quiet-command,$(OBJCOPY) \ + -S -O binary --prefix-symbols="_binary_$@" $@.out $@, " OBJCOPY $(TARGET_DIR)$@") +\end{lstlisting} + +\begin{itemize} + \item CC はコンパイラで、すでにmakeしたCbCのディレクトリを指定している。 + \item ASはアセンブラ、LDはリンカーで、それぞれarm-linux-gnuを指定してあげればよい。 +% CFLAGS と ASFLAGSについても書く + \item CFLAGS + \item ASFLAGS +\end{itemize} + +\break + +\section{xv6} + メモリを割く事でLinux上でもコンパイルの速度向上が望める。 + CbCはCによって記述されているので、Cから ARM.oのバイナリを生成し、ARM.oからa.outを出力する。 +OSX上に立ち上げたLinux 上で xv6を実装するまでの過程を、図\ref{fig:OSX_Linux_VM}に示す。 \begin{figure}[htpb] \begin{center} @@ -352,18 +481,15 @@ \label{fig:OSX_Linux_VM} \end{figure} -% Xv6詳しく - \begin{lstlisting}[frame=lrbt,label=LinuxCrossCompile,caption={LinuxでのCrossCompile}] - ./bin/clang -target arm-linux-gnueabi -mfpu=neon-fp16 -marm -I /net/open/Linux/arm/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/include/ hello.c -c -mfloat-abi=hard -\end{lstlisting} + \chapter{今後の課題} \label{chap:Task} -Xv6 で CbC が動くようになれば、Raspberry Pi 以外のハードウェアでの実装も容易になるので、Linux 上での実装を目指して研究を進めていく。Xv6 で CbC が動けば、続けて Linux 上で Gears OS の実装も行なっていく。 +Xv6 で CbC が動くようになれば、Raspberry Pi 以外のハードウェアでの実装も容易になるので、Linux 上での実装を目指して研究を進めていく。xv6 で CbC が動けば、続けて Linux 上で Gears OS の実装も行なっていく。 diff -r cca1d0bf491c -r 612de2705907 paper/main.toc --- a/paper/main.toc Sat Feb 17 19:34:35 2018 +0900 +++ b/paper/main.toc Tue Feb 20 12:45:39 2018 +0900 @@ -1,16 +1,19 @@ -\contentsline {chapter}{\numberline {第1章}(序章)}{1} -\contentsline {chapter}{\numberline {第2章}RaspberryPi上でのGearsOS}{2} -\contentsline {chapter}{\numberline {第3章}RaspberryPi上での実装}{3} -\contentsline {section}{\numberline {3.1}CbCのmake時間}{3} -\contentsline {section}{\numberline {3.2}T図形}{3} -\contentsline {chapter}{\numberline {第4章}CrossCompile}{5} -\contentsline {chapter}{\numberline {第5章}OSX}{6} -\contentsline {section}{\numberline {5.1}LLVM}{6} -\contentsline {section}{\numberline {5.2}GCC}{7} -\contentsline {chapter}{\numberline {第6章}Linux}{8} -\contentsline {section}{\numberline {6.1}LLVM}{8} -\contentsline {section}{\numberline {6.2}GCC}{8} -\contentsline {chapter}{\numberline {第7章}今後の課題}{10} -\contentsline {chapter}{謝辞}{11} -\contentsline {chapter}{参考文献}{12} -\contentsline {chapter}{付録}{13} +\contentsline {chapter}{\numberline {第1章}RaspberryPi上でのGearsOS}{2} +\contentsline {chapter}{\numberline {第2章}RaspberryPi上での実装}{3} +\contentsline {section}{\numberline {2.1}CbCのmake時間}{3} +\contentsline {chapter}{\numberline {第3章}CrossCompile}{4} +\contentsline {section}{\numberline {3.1}CrossCompile}{4} +\contentsline {section}{\numberline {3.2}xv6}{4} +\contentsline {section}{\numberline {3.3}T図形}{4} +\contentsline {chapter}{\numberline {第4章}OSX}{6} +\contentsline {section}{\numberline {4.1}LLVM}{6} +\contentsline {section}{\numberline {4.2}GCC}{6} +\contentsline {section}{\numberline {4.3}xv6}{7} +\contentsline {chapter}{\numberline {第5章}Linux}{8} +\contentsline {section}{\numberline {5.1}LLVM}{8} +\contentsline {section}{\numberline {5.2}GCC}{10} +\contentsline {section}{\numberline {5.3}xv6}{11} +\contentsline {chapter}{\numberline {第6章}今後の課題}{12} +\contentsline {chapter}{謝辞}{13} +\contentsline {chapter}{参考文献}{14} +\contentsline {chapter}{付録}{15} diff -r cca1d0bf491c -r 612de2705907 proceeding/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/proceeding/Makefile Tue Feb 20 12:45:39 2018 +0900 @@ -0,0 +1,36 @@ +# Created by Daichi Toma on Nov 16, 2011 + +TARGET=mid_thesis + +LATEX=platex +BIBTEX=pbibtex +DVIPDF=dvipdfmx -p a4 +#You need setting "-l" option if You think You get a landscape PDF +#DVIPDF_OPT=-l + +#Embed fonts +#DVIPDF_OPT=-f hiraginoEmbed.map + +.SUFFIXES: .tex .dvi .pdf + +.tex.dvi: + $(LATEX) $< + $(BIBTEX) $(TARGET) + $(LATEX) $< + $(LATEX) $< + +.dvi.pdf: + $(DVIPDF) $(DVIPDF_OPT) $< + + +all: $(TARGET).pdf + open $(TARGET).pdf + +dvi: $(TARGET).dvi + +pdf: $(TARGET).pdf + + +clean: + rm -f *.dvi *.aux *.log *.pdf *.ps *.gz *.bbl *.blg *.toc *~ *.core + diff -r cca1d0bf491c -r 612de2705907 proceeding/images/OSX.graffle Binary file proceeding/images/OSX.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/OSX.pdf Binary file proceeding/images/OSX.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/OSX_2.graffle Binary file proceeding/images/OSX_2.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/OSX_2.pdf Binary file proceeding/images/OSX_2.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/OSX_Linux_VM.graffle Binary file proceeding/images/OSX_Linux_VM.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/OSX_Linux_VM.pdf Binary file proceeding/images/OSX_Linux_VM.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/OSX_Linux_VM_2.graffle Binary file proceeding/images/OSX_Linux_VM_2.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/OSX_Linux_VM_2.pdf Binary file proceeding/images/OSX_Linux_VM_2.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/RaspberryPi.graffle Binary file proceeding/images/RaspberryPi.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/RaspberryPi.pdf Binary file proceeding/images/RaspberryPi.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/RaspberryPi_2.graffle Binary file proceeding/images/RaspberryPi_2.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/RaspberryPi_2.pdf Binary file proceeding/images/RaspberryPi_2.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/codesegment.pdf Binary file proceeding/images/codesegment.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/compile-example.graffle Binary file proceeding/images/compile-example.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/compiler.graffle Binary file proceeding/images/compiler.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/compiler.pdf Binary file proceeding/images/compiler.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/crosscompile.graffle Binary file proceeding/images/crosscompile.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/emblem-bitmap.pdf Binary file proceeding/images/emblem-bitmap.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/examples.graffle Binary file proceeding/images/examples.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/examples.pdf Binary file proceeding/images/examples.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/examples_2.graffle Binary file proceeding/images/examples_2.graffle has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/examples_2.pdf Binary file proceeding/images/examples_2.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/images/gearsos.pdf Binary file proceeding/images/gearsos.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/jlisting.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/proceeding/jlisting.sty Tue Feb 20 12:45:39 2018 +0900 @@ -0,0 +1,216 @@ +\NeedsTeXFormat{LaTeX2e} +\def\filedate{2006/02/20} +\def\fileversion{0.2} +\ProvidesPackage{jlisting}[\filedate\space\fileversion\space(Thor)] +% +\newcount\lst@nextchar +\let\lst@@ProcessSpace\lst@ProcessSpace +\def\lst@ProcessSpace#1{% + \lst@check@chartype{#1}% + \lst@@ProcessSpace + \lst@whitespacetrue} +\let\lst@@ProcessLetter\lst@ProcessLetter +\def\lst@ProcessLetter#1#2{% + \lst@check@chartype{#2}% + {\lst@@ProcessLetter{#1}}% + \relax} +\let\lst@@ProcessDigit\lst@ProcessDigit +\def\lst@ProcessDigit#1#2{% + \lst@check@chartype{#2}% + {\lst@@ProcessDigit{#1}}% + \relax} +\let\lst@@ProcessOther\lst@ProcessOther +\def\lst@ProcessOther#1#2{% + \lst@check@chartype{#2}% + {\lst@@ProcessOther{#1}}% + \relax} +\let\lst@@ProcessTabulator\lst@ProcessTabulator +\def\lst@ProcessTabulator#1{% + \lst@check@chartype{#1}% + \lst@@ProcessTabulator + \relax} +\def\lst@check@chartype#1#2#3{% + \edef\@tempa{\lst@nextchar=`\string#1\relax}% + \afterassignment\remove@to@nnil + \@tempa\@nnil + #2% + \ifnum\lst@nextchar<\@cclvi + #3% + \else + \lst@ifletter \else \lst@OutputOther \fi + \lst@whitespacefalse + \expandafter\lst@AppendJchar + \fi + #1} +\def\lst@AppendJchar#1#2{% + \lst@check@chartype{#2}% + {\advance\lst@length\@ne\lst@Append{#1}}% + \relax} +\def\lst@check@chartype@BOL#1{% + \edef\@tempa{\lst@nextchar=`\string#1\relax}% + \afterassignment\remove@to@nnil + \@tempa\@nnil + \ifnum\lst@nextchar<\@cclvi\else + \lst@whitespacefalse + \expandafter\lst@AppendJchar + \fi + #1} +\def\lst@InputListing#1{% + \begingroup + \lsthk@PreSet \gdef\lst@intname{#1}% + \expandafter\lstset\expandafter{\lst@set}% + \lsthk@DisplayStyle + \catcode\active=\active + \lst@Init\relax \let\lst@gobble\z@ + \lst@SkipToFirst + \lst@ifprint \def\lst@next{\lst@get@filecontents{#1}}% + \else \let\lst@next\@empty + \fi + \lst@next + \lst@DeInit + \endgroup} +\newread\lst@inputfile +\def\lst@get@filecontents#1{% + \let\lst@filecontents\@empty + \openin\lst@inputfile=#1\relax + \let\@lst@get@filecontents@prevline\relax + \lst@get@filecontents@loop + \closein\lst@inputfile + \lst@filecontents\empty} +\def\lst@get@filecontents@loop{% + \read\lst@inputfile to\@lst@get@filecontents@currline + \ifx\@lst@get@filecontents@prevline\relax\else + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\lst@filecontents + \expandafter\expandafter\expandafter{% + \expandafter\lst@filecontents\@lst@get@filecontents@prevline}% + \fi + \let\@lst@get@filecontents@prevline\@lst@get@filecontents@currline + \ifeof\lst@inputfile\else + \expandafter\lst@get@filecontents@loop + \fi} +%%% [$B$3$N=hM}$b!$AjEv6/0z$G$9!%(B] +\def\lst@BOLGobble{% + \ifnum\lst@gobble>\z@ + \@tempcnta\lst@gobble\relax + \expandafter\lst@BOLGobble@ + \else + \expandafter\lst@check@chartype@BOL + \fi} +\def\lst@BOLGobble@#1{% + \let\lst@next#1% + \ifx \lst@next\relax\else + \ifx \lst@next\lst@MProcessListing\else + \ifx \lst@next\lst@ProcessFormFeed\else + \ifx \lst@next\lstenv@backslash + \let\lst@next\lstenv@BOLGobble@@ + \else + \let\lst@next\lst@BOLGobble@@ + \ifx #1\lst@ProcessTabulator + \advance\@tempcnta-\lst@tabsize\relax + \ifnum\@tempcnta<\z@ + \lst@length-\@tempcnta \lst@PreGotoTabStop + \fi + \else + \edef\@tempa{\lst@nextchar=`\string#1\relax}% + \@tempa + \ifnum\lst@nextchar<\@cclvi\else + \advance\@tempcnta\m@ne + \fi + \advance\@tempcnta\m@ne + \fi + \fi \fi \fi \fi + \lst@next} +\def\lst@BOLGobble@@{% + \ifnum\@tempcnta>\z@ + \expandafter\lst@BOLGobble@ + \else + \expandafter\lst@check@chartype@BOL + \fi +} +% +% \begin{$B=$@5;v9`(B}{1.3} +% $B$A$g$C$H$7$?=$@5(B +\gdef\lst@breakProcessOther#1{\lst@ProcessOther#1} +% $B%=!<%9%3!<%IL\:\$7$^$7$?!#(B + +\begin{quote} + \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21172.html}\\ + \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21184.html}\\ + \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21189.html}\\ + \url{http://http://cise.edu.mie-u.ac.jp/~okumura/texfaq/qa/21197.html} +\end{quote} + + Copyright $B$O5H1JE/H~;a$K$"$k$N$@$H;W$$$^$9!%(B + +\section{$B99?7MzNr(B}% ChageLogs + +\begin{description} + \item[ver.~0.1 (2004/03/24)] + $B$H$j$"$($:8x3+!%(B + \item[ver.~0.2 (2006/02/20)] + \verb|\lst@breakProcessOther| $BL?Na$NDj5A$NDI2C!%(B +\end{description} + +\section{$B%=!<%9%3!<%I(B} +\par\narrowbaselines +\verbatiminput{jlisting.sty} +\end{document} diff -r cca1d0bf491c -r 612de2705907 proceeding/mid_thesis.aux --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/proceeding/mid_thesis.aux Tue Feb 20 12:45:39 2018 +0900 @@ -0,0 +1,24 @@ +\relax +\@writefile{toc}{\contentsline {section}{\numberline {1}Raspberry Pi上での Gears OS}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {2}Raspberry Pi 上での実装}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {3}CrossCompile}{1}} +\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces make時間の比較}}{1}} +\newlabel{tab:make_time}{{1}{1}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces 図の例}}{1}} +\newlabel{fig:examples}{{1}{1}} +\citation{*} +\bibstyle{junsrt} +\bibdata{reference} +\bibcite{kaito:2015}{1} +\bibcite{gears}{2} +\bibcite{kokubo:2016}{3} +\bibcite{llvm}{4} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Raspberry Pi}}{2}} +\newlabel{fig:RaspberryPi}{{2}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {4}OSX CrossCompile}{2}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces OSX}}{2}} +\newlabel{fig:OSX}{{3}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {5}Linux CrossCompile}{2}} +\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces OSX Linux VM}}{2}} +\newlabel{fig:OSX_Linux_VM}{{4}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {6}今後の課題}{2}} diff -r cca1d0bf491c -r 612de2705907 proceeding/mid_thesis.bbl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/proceeding/mid_thesis.bbl Tue Feb 20 12:45:39 2018 +0900 @@ -0,0 +1,19 @@ +\begin{thebibliography}{1} + +\bibitem{kaito:2015} +{徳森 海斗, 河野真治}. +\newblock Llvm clang 上の continuation based c コンパイラ の改良, 2015. + +\bibitem{gears} +{伊波立樹, 東恩納琢偉, 河野真治}. +\newblock Code gear、data gear に基づく os のプロトタイプ, 2016. + +\bibitem{kokubo:2016} +{小久保翔平, 河野真治}. +\newblock Code segment と data segment を持つ gears os の設計, 2016. + +\bibitem{llvm} +{The LLVM Compiler Infrastructure}. +\newblock \url{http://llvm.org}. + +\end{thebibliography} diff -r cca1d0bf491c -r 612de2705907 proceeding/mid_thesis.blg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/proceeding/mid_thesis.blg Tue Feb 20 12:45:39 2018 +0900 @@ -0,0 +1,47 @@ +This is pBibTeX, Version 0.99d-j0.33 (utf8.euc) (TeX Live 2016) +Capacity: max_strings=35307, hash_size=35307, hash_prime=30011 +The top-level auxiliary file: mid_thesis.aux +The style file: junsrt.bst +Database file #1: reference.bib +You've used 4 entries, + 2270 wiz_defined-function locations, + 554 strings with 4492 characters, +and the built_in function-call counts, 665 in all, are: += -- 32 +> -- 16 +< -- 0 ++ -- 8 +- -- 4 +* -- 5 +:= -- 81 +add.period$ -- 8 +call.type$ -- 4 +change.case$ -- 3 +chr.to.int$ -- 0 +cite$ -- 4 +duplicate$ -- 44 +empty$ -- 97 +format.name$ -- 8 +if$ -- 161 +int.to.chr$ -- 0 +int.to.str$ -- 4 +missing$ -- 0 +newline$ -- 19 +num.names$ -- 4 +pop$ -- 46 +preamble$ -- 1 +purify$ -- 0 +quote$ -- 0 +skip$ -- 42 +stack$ -- 0 +substring$ -- 0 +swap$ -- 4 +text.length$ -- 0 +text.prefix$ -- 0 +top$ -- 0 +type$ -- 0 +warning$ -- 0 +while$ -- 4 +width$ -- 5 +write$ -- 33 +is.kanji.str$ -- 28 diff -r cca1d0bf491c -r 612de2705907 proceeding/mid_thesis.log --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/proceeding/mid_thesis.log Tue Feb 20 12:45:39 2018 +0900 @@ -0,0 +1,253 @@ +This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.5.28) 20 FEB 2018 11:27 +entering extended mode + restricted \write18 enabled. + file:line:error style messages enabled. + %&-line parsing enabled. +**mid_thesis.tex +(./mid_thesis.tex +pLaTeX2e <2016/05/07> (based on LaTeX2e <2016/03/31>) +Babel <3.9r> and hyphenation patterns for 83 language(s) loaded. +(/usr/local/texlive/2016/texmf-dist/tex/platex/base/jarticle.cls +Document Class: jarticle 2006/06/27 v1.6 Standard pLaTeX class +\c@@paper=\count81 +(/usr/local/texlive/2016/texmf-dist/tex/platex/base/jsize10.clo +File: jsize10.clo 2006/06/27 v1.6 Standard pLaTeX file (size option) +) +\c@part=\count82 +\c@section=\count83 +\c@subsection=\count84 +\c@subsubsection=\count85 +\c@paragraph=\count86 +\c@subparagraph=\count87 +\c@figure=\count88 +\c@table=\count89 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\symmincho=\mathgroup4 +LaTeX Font Info: Overwriting symbol font `mincho' in version `bold' +(Font) JY1/mc/m/n --> JY1/gt/m/n on input line 593. +\toclineskip=\dimen118 +\@lnumwidth=\dimen119 +\bibindent=\dimen120 +\heisei=\count90 +) +(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks15 +) +(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2016/05/09 v1.0r Standard LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/01/02 v1.10 sample graphics configuration +) +Package graphics Info: Driver file: dvipdfmx.def on input line 96. + +(/usr/local/texlive/2016/texmf-dist/tex/latex/dvipdfmx-def/dvipdfmx.def +File: dvipdfmx.def 2016/04/06 v4.08 LaTeX color/graphics driver for dvipdfmx (T +eX Live/ChoF) + +(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) +) +(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) +))) +\Gin@req@height=\dimen121 +\Gin@req@width=\dimen122 +) +(./picins.sty Option `picins' Version 3.0 Sep. 1992, TH Darmstadt/HRZ +\@BILD=\box41 +\@TEXT=\box42 +\d@breite=\dimen123 +\d@hoehe=\dimen124 +\d@xoff=\dimen125 +\d@yoff=\dimen126 +\d@shad=\dimen127 +\d@dash=\dimen128 +\d@boxl=\dimen129 +\d@pichskip=\dimen130 +\d@tmp=\dimen131 +\d@tmpa=\dimen132 +\d@bskip=\dimen133 +\hsiz@=\dimen134 +\p@getot@l=\dimen135 +\c@breite=\count91 +\c@hoehe=\count92 +\c@xoff=\count93 +\c@yoff=\count94 +\c@pos=\count95 +\c@shad=\count96 +\c@dash=\count97 +\c@boxl=\count98 +\c@zeilen=\count99 +\@changemode=\count100 +\c@piccaption=\count101 +\c@piccaptionpos=\count102 +\c@picpos=\count103 +\c@whole=\count104 +\c@half=\count105 +\c@tmp=\count106 +\c@tmpa=\count107 +\c@tmpb=\count108 +\c@tmpc=\count109 +\c@tmpd=\count110 +\d@leftskip=\skip43 +\ptoti=\dimen136 +\ptotii=\dimen137 +\env@box=\box43 +\d@envdp=\dimen138 +\c@hsize=\count111 +\c@envdp=\count112 +\d@envb=\dimen139 +) +(/usr/local/texlive/2016/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +\fancy@headwidth=\skip44 +\f@ncyO@elh=\skip45 +\f@ncyO@erh=\skip46 +\f@ncyO@olh=\skip47 +\f@ncyO@orh=\skip48 +\f@ncyO@elf=\skip49 +\f@ncyO@erf=\skip50 +\f@ncyO@olf=\skip51 +\f@ncyO@orf=\skip52 +) +(/usr/local/texlive/2016/texmf-dist/tex/latex/abstract/abstract.sty +Package: abstract 2009/06/08 v1.2a configurable abstracts +\abstitleskip=\skip53 +\absleftindent=\skip54 +\absrightindent=\skip55 +\absparindent=\skip56 +\absparsep=\skip57 +) +(/usr/local/texlive/2016/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +(/usr/local/texlive/2016/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count113 +\float@exts=\toks16 +\float@box=\box44 +\@float@everytoks=\toks17 +\@floatcapt=\box45 +) + +! LaTeX Error: File `dummy.tex' not found. + +Type X to quit or to proceed, +or enter new name. (Default extension: tex) + +Enter file name: + +LaTeX Warning: Unused global option(s): + [9.5pt]. + +(./mid_thesis.aux) +\openout1 = `mid_thesis.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 25. +LaTeX Font Info: ... okay on input line 25. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <12> on input line 42. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <8> on input line 42. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <6> on input line 42. +LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <9> not available +(Font) Font shape `JT1/gt/m/n' tried instead on input line 42. +LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <9> not available +(Font) Font shape `JY1/gt/m/n' tried instead on input line 42. +LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <14.4> not available +(Font) Font shape `JT1/gt/m/n' tried instead on input line 44. +LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <14.4> not available +(Font) Font shape `JY1/gt/m/n' tried instead on input line 44. +LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <10> not available +(Font) Font shape `JT1/gt/m/n' tried instead on input line 108. +LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <10> not available +(Font) Font shape `JY1/gt/m/n' tried instead on input line 108. + + +LaTeX Warning: Reference `tab:make_time' on page 1 undefined on input line 108. + + +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <7> on input line 121. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <5> on input line 121. + +LaTeX Warning: Reference `fig:examples' on page 1 undefined on input line 148. + +File: images/examples_2.pdf Graphic file (type pdf) + +File: images/emblem-bitmap.pdf Graphic file (type pdf) + + +Package Fancyhdr Warning: \headheight is too small (0.0pt): + Make it at least 20.37784pt. + We now make it that large for the rest of the document. + This may cause the page layout to be inconsistent, however. + +[1 + + +] + +LaTeX Warning: Reference `images:RaspberryPi' on page 2 undefined on input line + 163. + +File: images/RaspberryPi_2.pdf Graphic file (type pdf) + + +LaTeX Warning: Reference `fig:OSX' on page 2 undefined on input line 183. + +File: images/OSX_2.pdf Graphic file (type pdf) + + +LaTeX Warning: Reference `fig:OSX_Linux_VM' on page 2 undefined on input line 2 +04. + +File: images/OSX_Linux_VM_2.pdf Graphic file (type pdf) + +Overfull \hbox (12.99443pt too wide) in paragraph at lines 208--209 + [] + [] + +(./mid_thesis.bbl) [2] (./mid_thesis.aux) + +LaTeX Warning: There were undefined references. + + +LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. + + ) +Here is how much of TeX's memory you used: + 1282 strings out of 493693 + 15867 string characters out of 6149787 + 82577 words of memory out of 5000000 + 4847 multiletter control sequences out of 15000+600000 + 15097 words of font info for 59 fonts, out of 8000000 for 9000 + 929 hyphenation exceptions out of 8191 + 27i,15n,43p,446b,365s stack positions out of 5000i,500n,10000p,200000b,80000s + +Output written on mid_thesis.dvi (2 pages, 11608 bytes). diff -r cca1d0bf491c -r 612de2705907 proceeding/mid_thesis.pdf Binary file proceeding/mid_thesis.pdf has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/mid_thesis.synctex.gz Binary file proceeding/mid_thesis.synctex.gz has changed diff -r cca1d0bf491c -r 612de2705907 proceeding/mid_thesis.tex --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/proceeding/mid_thesis.tex Tue Feb 20 12:45:39 2018 +0900 @@ -0,0 +1,228 @@ +\documentclass[twocolumn,twoside,9.5pt]{jarticle} +\usepackage[dvipdfmx]{graphicx} +\usepackage{picins} +\usepackage{fancyhdr} +\usepackage{abstract} +\usepackage{url} +\usepackage{float} +%\pagestyle{fancy} +\lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{images/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 卒業研究中間発表会} +\rhead{} +\cfoot{} + +\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} +\setlength{\headheight}{0mm} +\setlength{\headsep}{5mm} +\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} +\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} +\setlength{\textwidth}{181mm} +\setlength{\textheight}{261mm} +\setlength{\footskip}{0mm} +\pagestyle{empty} + +\input{dummy.tex} +\renewcommand{\abstractname}{概要} +\begin{document} +\title{Gears OS on Raspberry Pi} +%\title{Supporting NAT in Screen Sharing System TreeVNC} +\author{145759E 氏名 {桃原}{優} 指導教員 : 河野 真治} +\date{} +\twocolumn[ +\maketitle +\thispagestyle{fancy} + +\begin{abstract} +In our laboratory doing development CbC and Gears OS make use of CbC. + + CbC can be write meta level processing and parallel processing. + Meta level processing can management memory , thread, CPU and GPU. + In this research aiming to run Gears OS on Raspberry Pi + + \end{abstract} +] + +\section{Raspberry Pi上での Gears OS} +当研究室では CbC(Continuation base C) とCbC を用いて実装する +GearsOS の研究を行っている。 + +CbC は Code Segment と Data Segment という単位でプログラムを記述する。 +Code Segment は並列処理の単位として利用でき、 +Data Segment はデータそのもので型を持っていて、 +CbC はメタレベルの処理,並列処理を記述することができる。 + +メタレベルの処理では、メモリ管理、スレッド管理、CPU や GPU の資源管理 +を記述することができる。 + +本研究では、ARM で動くシングルボードコンピュータである +Raspberry Pi 上で Gears OS を動かせるようになる事で、 +ハードウェア上でもメタレベルの処理、並列実行ができるプログラミング +を記述できるようになる事を目指している。 + +しかし、メモリの関係上 RaspberryPi 上で CbC の make を行うと、 +かなりの時間がかかる。 + +解決案として、OSX 上で CrossCompile を行う方法と、Linux 環境で +CrossCompile を行う方法を提案する。 + +% \section{CbC} +% Gears OS の実装には LLVM/Clang 上に実装した CbC(Continuation based C)を用いる。\\ +% CbC は Code Segment を基本的な処理単位とする。C の関数とは異なり返り値を持たないが、Code Segment の宣言は C の関数の構文と同じように行い、型に \_\_code を用いる。\\ +% CbC は for 文や while 文といったループ制御構文を持たないので、ループ処理は自分自身への再帰的な継続を行う事で実現する。\\ +% 現在の Code Segment から次の Code Segment への移動は goto の後に Code Segment 名と引数を並べて記述する。この goto による処理の遷移を継続と呼ぶ。C と異なり、戻り値を持たない Code Segment ではスタックに値を積んで行く必要が無くスタックは変更されない。このようなスタックに値を積まない継続を軽量継続と呼ぶ。この軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようになる。 +% +% +% % \begin{figure}[htpb] +% % \begin{center} +% % \scalebox{0.5}{\includegraphics{/codesegment.pdf}} +% % \end{center} +% % \caption{goto による Code Segment 間の継続} +% % \label{fig:cs} +% % \end{figure} +% +% \section{Code Gear と Data Gear} +% Gears OS では、プログラムの単位として Gear を用いる。Gear は並列実行の単位、データの分割、Gear 間の接続等になる。 +% Code Gear はプログラムの処理そのものであり、任意の数の Data Gear を参照し、処理が完了すると任意の数の Data Gear に書き込む。Code Gear は接続された Data Gear 以外にアクセスできない。Code Segment と同じように Code Gear から次の Code Gear への処理の移動は goto の後に Code Gear の名前と引数を指定する事で実現できる。 +% Data Gear はデータそのものを表す。int や 文字列などの Primitive Data Type を持っている。Gear の特徴として処理やデータの構造が Code Gear、Data Gear に閉じている事にある。これにより、実行時間、メモリ使用量などを予測可能なものにすることができる。 +% +% % \section{Context} +% % 接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear 等のためのメモリ空間を持っており、Context を通してアクセスすることができる。Context にはメインとなる Context と Worker 用の Context がある。Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉する事はできない。 + + + + + + + + + + +\section{Raspberry Pi 上での実装} +% Raspberry Pi の OS である Raspbian ではメモリが 256MB なので +% Raspberry Pi 上で直接 CbC をコンパイルするには時間がかかる。qemu によるメモリの拡張もできないので、別の手法で Raspberry Pi 上に CbC を実装する方が好ましい。 +Raspberry Pi 1 のメモリは 256MB と小さいため、 CbC をmakeすることができない。 +Raspberry Pi 3 だとメモリは 1GB あり CbC をmakeできるが、時間がかかる。 + + + +make時間の比較として研究室のサーバでメモリ16GBのfireflyと学科のサーバの一つでLinux環境であるメモリ756GBのDALMOREを用いる。 +なお、fireflyとDALMOREではGoogleによって開発されたbuildシステムのninja-buildを用いてmakeを行なった。その結果を表\ref{tab:make_time}に示す。 + +% ninja + +\begin{table}[htb] +\centering +\scalebox{1.0}[1.0]{ + \begin{tabular}{| c | r | r |} \hline + 環境(メモリ) & 時間 & 比較 \\ \hline \hline + RaspberryPi(1GB) & 15時間11分06秒 & 1.00倍 \\ \hline + OSX(16GB) & 2時間16分06秒 & 6.69倍 \\ \hline + Linux(756GB) & 2分26秒 & 374.42倍 \\ \hline + \end{tabular} + } + \caption{make時間の比較} + \label{tab:make_time} +\end{table} + +\section{CrossCompile} + CrossCompile を行うことで make 時間の問題を解決する方法がある。 +% CrossCompile とは、別の OS で実行可能なコードを生成するコンパイルの手法である。 +% つまり、OSX であらかじめ Raspberry Pi で CbC が動くように CrossCompile を行い、そのコードを Raspberry Pi に移せばよい。\\ + CrossCompile とは、別の OS で実行可能なコードを生成するコンパイルの手法である。 +Raspbian 以外の OS 環境であらかじめ Raspberry Pi で CbC が動くように CrossCompile を行い、そのコードを Raspberry Pi に移す事で、実行できるようになる。 + +% この研究でOSX とLinuxそれぞれで LLVMとGCCのCrossCompileを行う説明 + +Raspberry Pi の OS である Rasbian は qemu によるメモリの拡張もできないので、 +別の手法で Raspberry Pi 上に CbC を実装する方が好ましい。 + + + + マサチューセッツ工科大の大学院生向け講義の教材として使うために、UNIX V6 という OS を + ANSI-C に書き換え、x86に移植したXv6 という OS がある。 +Xv6 は Raspberry Pi に移植する事ができる。ANSI-C で書かれている Xv6 を CbC に書き直す事で、 +Raspberry Pi で CbC を動かせるようになる。 + + +CbC を Raspberry Pi で動かすためのアプローチの手法を、I と T の形をした図の組み合わせによって説明を行う。I の上部分に cbclang や Xv6 などのソースコード名を、下部分にその機能の記述言語を記してある。T の下にある I は特別で、上に VM 下に VM を乗せている OS が記されている。 T の上部分は左に入力されるファイル、右に出力されるその機能によって出力されるファイルが記され、下部分にその機能の記述言語が記されている。 + +例として、cbclang のソースコード(I)と、 Raspberry Pi 上の clang (T) を図\ref{fig:examples} に示す。 + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.35}{\includegraphics{images/examples_2.pdf}} + \end{center} + \caption{図の例} + \label{fig:examples} +\end{figure} + + +\break + + +Raspberry Pi は ARM のコードを生成する。CbCはCによって記述されているため、Cから ARM.o を生成し、ARM.o から a.out を出力する。 +Raspberry Pi 上でxv6を実装し、cbcからa.outを出力するまでの過程を図\ref{images:RaspberryPi}に示す。 + + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.17}{\includegraphics{images/RaspberryPi_2.pdf}} + \end{center} + \caption{Raspberry Pi} + \label{fig:RaspberryPi} +\end{figure} + + + + +\section{OSX CrossCompile} +OSX上でxv6を実装する場合、Cから mach-o のバイナリファイルが生成される。 + この時、出力は mach-o になるので、mach-o の + loader 作ることで CbC が動かせるようになる。 + + OSX 上で行えるためコンパイルの速度向上が望める。 +xv6を実装しCbCからa.outを出力するまでの過程を、図\ref{fig:OSX}に示す。 + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.35}{\includegraphics{images/OSX_2.pdf}} + \end{center} + \caption{OSX} + \label{fig:OSX} +\end{figure} + + + +\section{Linux CrossCompile} +OSX と別に Linux 環境で CbC を動かした後に、Raspberry Pi に載せる手法がある。 + + Linux の LLVM でコンパイルすることができれば elf のコードを書けるようになるので、elf のloader を作る事で、CbC を動かすことができる。 + + また、Linux 用の gcc を CbC に書き直す際に、gcc7 に書き直せば linker がそのまま使えるので、xv6 で動くようになる。 + + + CbCはCによって記述されているので、Cから ARM.oのバイナリを生成し、ARM.oからa.outを出力する。 +OSX上に立ち上げたLinux 上で xv6を実装するまでの過程を、図\ref{fig:OSX_Linux_VM}に示す。 + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.5}{\includegraphics{images/OSX_Linux_VM_2.pdf}} + \end{center} + \caption{OSX Linux VM} + \label{fig:OSX_Linux_VM} +\end{figure} + +% Xv6詳しく + +\section{今後の課題} + xv6 で CbC が動くようになれば、Raspberry Pi 以外のハードウェアでの実装も容易になるので、Linux 上での実装を目指して研究を進めていく。xv6 で CbC が動けば、続けて Linux 上で Gears OS の実装も行なっていく。 + + +% \section{clang のバージョンアップ} +% CbC はバージョン 3.9 の clang を使用している。現在のバージョンの LLVM と clang を使用して、CbCをコンパイラできるように修正を加える必要がある。 + +% cross compiler, 実機, VM への実装を書く + +\nocite{*} +\bibliographystyle{junsrt} +\bibliography{reference} +\end{document} diff -r cca1d0bf491c -r 612de2705907 proceeding/picins.sty --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/proceeding/picins.sty Tue Feb 20 12:45:39 2018 +0900 @@ -0,0 +1,578 @@ +% PICINS.STY --- Style File zum Einbinden von Bildern +% Autor: J. Bleser, E. Lang +% Hochschulrechenzentrum +% Technische Hochschule Darmstadt +% !!! Dieses Style-File ist urheberrechtlich geschuetzt !!! +% !!! Aenderungen nur mit Zustimmung der Autoren !!! +\message{Option `picins' Version 3.0 Sep. 1992, TH Darmstadt/HRZ} +\newbox\@BILD% +\newbox\@TEXT% +\newdimen\d@breite% +\newdimen\d@hoehe% +\newdimen\d@xoff% +\newdimen\d@yoff% +\newdimen\d@shad% +\newdimen\d@dash% +\newdimen\d@boxl% +\newdimen\d@pichskip% +\newdimen\d@tmp +\newdimen\d@tmpa +\newdimen\d@bskip +\newdimen\hsiz@% +\newdimen\p@getot@l% +\newcount\c@breite +\newcount\c@hoehe +\newcount\c@xoff +\newcount\c@yoff +\newcount\c@pos +\newcount\c@shad +\newcount\c@dash +\newcount\c@boxl +\newcount\c@zeilen% +\newcount\@changemode% +\newcount\c@piccaption% +\newcount\c@piccaptionpos% +\newcount\c@picpos +\newcount\c@whole% +\newcount\c@half% +\newcount\c@tmp +\newcount\c@tmpa +\newcount\c@tmpb +\newcount\c@tmpc +\newcount\c@tmpd +\newskip\d@leftskip +\newif\if@list \@listfalse% +\newif\if@offset% + + +\c@piccaptionpos=1% +\c@picpos=0 +\d@shad=4pt% +\d@dash=4pt% +\d@boxl=10pt% +\d@pichskip=1em% +\@changemode=0% +\def\@captype{figure}% +\let\old@par=\par% + +\def\pichskip#1{\d@pichskip #1\relax} + + +\def\shadowthickness#1{\d@shad #1\relax} + + +\def\dashlength#1{\d@dash #1\relax} + + +\def\boxlength#1{\d@boxl #1\relax} + + +\def\picchangemode{\@changemode=1}% +\def\nopicchangemode{\@changemode=0}% + + +\def\piccaptionoutside{\c@piccaptionpos=1}% +\def\piccaptioninside{\c@piccaptionpos=2}% +\def\piccaptionside{\c@piccaptionpos=3}% +\def\piccaptiontopside{\c@piccaptionpos=4}% + +\def\piccaption{\@ifnextchar [{\@piccaption}{\@piccaption[]}} +\def\@piccaption[#1]#2{\c@piccaption=1\def\sh@rtf@rm{#1}\def\capti@nt@xt{#2}} +\def\make@piccaption{% + \hsiz@\d@breite% + \ifnum\c@piccaptionpos=2% + \advance\hsiz@ -2\fboxsep% + \fi% + \ifnum\c@piccaptionpos>2% + \hsiz@\hsize\advance\hsiz@-\d@breite\advance\hsiz@-\d@pichskip% + \fi% + \setbox\@TEXT=\vbox{\hsize\hsiz@\caption[\sh@rtf@rm]{\capti@nt@xt}}% +} + + + +\def\newcaption{\refstepcounter\@captype\@dblarg{\@newcaption\@captype}} +\long\def\@newcaption#1[#2]#3{% + \old@par% + \addcontentsline{\csname ext@#1\endcsname }{#1}% + {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}} + \begingroup\@parboxrestore\normalsize% + \@newmakecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\old@par% + \endgroup% +} +\long\def\@newmakecaption#1#2{% + \vskip 10pt% + \setbox\@tempboxa \hbox {#1: #2}% + \ifdim \wd\@tempboxa >\hsize% + \setbox0=\hbox{#1: }\dimen0=\hsize\advance\dimen0 by-\wd0 + \setbox1=\vtop{\hsize=\dimen0 #2} + \hbox{\box0 \box1} + \par + \else \hbox to\hsize {\hfil \box \@tempboxa \hfil} + \fi +} + + + + + +\def\parpic{% + \@ifnextchar ({\iparpic}{\iparpic(0pt,0pt)} +} +\def\iparpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iiparpic(#1,#2)}% + {\@offsetfalse\iiparpic(#1,#2)(0pt,0pt)} +} +\def\iiparpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiiparpic(#1,#2)(#3,#4)}{\iiiparpic(#1,#2)(#3,#4)[l]} +} +\def\iiiparpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivparpic(#1,#2)(#3,#4)[#5]}{\ivparpic(#1,#2)(#3,#4)[#5][]} +} +\def\ivparpic(#1,#2)(#3,#4)[#5][#6]#7{% + \let\par=\old@par\par% + \hangindent0pt\hangafter1% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \multiply\c@piccaption\c@piccaptionpos% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=1\unitlength1pt% + \if@offset% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \ifnum\c@piccaption=2% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}% + \hbox{\hspace{\fboxsep}\box\@TEXT}% + \vspace{4pt}}% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa l\c@pos=1\fi% + \if\@tempa r\c@pos=2\fi% + }% + \ifnum\c@piccaption=1% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}\hbox{\box\@TEXT}\vspace{4pt}}% + \fi% + \ifodd\count0\c@picpos=0\else\c@picpos=\@changemode\fi% + \pagetotal=\the\pagetotal% + \d@tmp=\pagegoal\advance\d@tmp by-\pagetotal\advance\d@tmp by-\baselineskip% + \ifdim\d@hoehe>\d@tmp% + \vskip 0pt plus\d@hoehe\relax\pagebreak[3]\vskip 0pt plus-\d@hoehe\relax% + \ifnum\c@picpos=1\c@picpos=0\else\c@picpos=\@changemode\fi% + \fi% + \ifnum\c@picpos=1\ifnum\c@pos=1\c@pos=2\else\c@pos=1\fi\fi% + \ifnum\@listdepth>0 + \@listtrue\parshape 0% + \advance\hsize -\rightmargin% + \d@leftskip \leftskip% + \leftskip \@totalleftmargin% + \if@inlabel\rule{\linewidth}{0pt}\vskip-\baselineskip\relax\fi% + \else\@listfalse\medskip% + \fi% + \if@list\d@tmpa=\linewidth\else\d@tmpa=\hsize\fi% + \ifnum\c@piccaption=3% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \ifdim\d@hoehe>\d@tmp% + \setbox\@TEXT=\vbox to\d@hoehe{\vfill\box\@TEXT\vspace{.2\baselineskip}\vfill}% + \else% + \setbox\@BILD=\vbox to\d@tmp{\vfill\box\@BILD\vfill}% + \d@hoehe\d@tmp% + \fi% + \fi% + \ifnum\c@piccaption=4% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \setbox\@TEXT=\vbox to\d@hoehe{\vspace{-10pt}\box\@TEXT\vfil}% + \advance\d@hoehe-\d@tmp% + \fi% + \ifnum\c@pos=1\d@tmpa=0pt% + \ifnum\c@piccaption>2% + \setbox\@BILD=\hbox{\box\@BILD\hspace{\d@pichskip}\hbox{\box\@TEXT}}% + \fi% + \else\advance\d@tmpa by-\wd\@BILD\d@breite=-\d@breite% + \ifnum\c@piccaption>2% + \d@tmpa=0pt% + \setbox\@BILD=\hbox{\hbox{\box\@TEXT}\hspace{\d@pichskip}\box\@BILD}% + \fi% + \fi% + \p@getot@l\the\pagetotal% + \d@bskip\d@hoehe\advance\d@bskip by\parskip\advance\d@bskip by.3\baselineskip% + {\noindent\hspace*{\d@tmpa}\relax% + \box\@BILD\nopagebreak\vskip-\d@bskip\relax\nopagebreak}% + \d@tmp=-\d@hoehe\divide\d@tmp by\baselineskip% + \c@zeilen=\d@tmp\advance\c@zeilen by-1% + \ifdim\d@breite<0pt\advance\d@breite by-\d@pichskip% + \else\advance\d@breite by\d@pichskip% + \fi% + \hangindent=\d@breite% + \hangafter=\c@zeilen% + \let\par=\x@par% + \ifnum\c@piccaption=3% + \hangindent0pt\hangafter1\let\par=\old@par% + \vskip\d@hoehe\vskip.2\baselineskip% + \fi% + \c@piccaption=0% +} + + + + +\newdimen\ptoti +\newdimen\ptotii +\def\x@par{% + \ptoti\pagetotal% + \old@par% + \ptotii\pagetotal% + \ifdim\ptoti=\ptotii% + \d@tmp\d@hoehe% + \else% + \d@tmp\baselineskip% + \multiply\d@tmp by\prevgraf% + \advance\d@tmp by\parskip% + \global\advance\d@hoehe by-\d@tmp\d@tmp=\d@hoehe% + \fi% + \ifdim\d@hoehe>0pt% + \divide\d@tmp by\baselineskip\c@zeilen=-\d@tmp\advance\c@zeilen by-1% + \c@zeilen=\the\c@zeilen% + \else\c@zeilen=0 + \fi + \ifnum\c@zeilen<0\hangafter=\c@zeilen\hangindent=\d@breite% + \else\let\par=\old@par% + \hangindent 0pt% + \leftskip \d@leftskip% + \if@list\parshape \@ne \@totalleftmargin \linewidth% + \advance\hsize \rightmargin% + \fi% + \fi% +} + + +\def\picskip#1{% + \let\par=\old@par% + \par% + \pagetotal\the\pagetotal% + \c@tmp=#1\relax% + \ifnum\c@tmp=0% + \d@tmp\baselineskip\multiply\d@tmp by\prevgraf\advance\d@tmp\parskip% + \ifdim\p@getot@l<\pagetotal + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex% + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi% + \fi% + \ifdim\p@getot@l=\pagetotal% + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex% + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi% + \fi% + \else\hangafter=-\c@tmp\hangindent=\d@breite% + \fi% + \leftskip \d@leftskip% + \if@list\parshape \@ne \@totalleftmargin \linewidth% + \advance\hsize \rightmargin% + \fi% +} + + + + + + +\def\hpic{% + \@ifnextchar ({\ihpic}{\ihpic(0pt,0pt)} +} +\def\ihpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iihpic(#1,#2)}% + {\@offsetfalse\iihpic(#1,#2)(0pt,0pt)} +} +\def\iihpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiihpic(#1,#2)(#3,#4)}{\iiihpic(#1,#2)(#3,#4)[l]} +} +\def\iiihpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivhpic(#1,#2)(#3,#4)[#5]}{\ivhpic(#1,#2)(#3,#4)[#5][]} +} +\def\ivhpic(#1,#2)(#3,#4)[#5][#6]#7{% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=0\d@tmpa=\parindent\parindent=0pt\unitlength1pt% + \if@offset + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa t\c@pos=1\fi% + \if\@tempa b\c@pos=2\fi% + }% + \ifnum\c@pos=0\parbox{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=1\parbox[t]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=2\parbox[b]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \parindent=\d@tmpa% +} + + + + + + +\def\Rahmen(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@tmpa=#1\advance\c@tmpa by\c@whole\advance\c@tmpa by\c@whole% + \c@tmpb=#2\advance\c@tmpb by\c@whole\advance\c@tmpb by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} + + +\def\Schatten(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@shad=\d@shad\divide\c@shad by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole\c@tmpd=\c@tmp% + \advance\c@tmp by\c@shad% + \advance\c@tmpd by#1% + \advance\c@half by\c@shad% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \put(\c@shad,0){\rule{\c@tmpd pt}{\c@shad pt}}% + \put(\c@tmpd,0){\rule{\c@shad pt}{#2 pt}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth\global\advance\d@breite by\d@shad% + \global\advance\d@hoehe by2\@wholewidth\global\advance\d@hoehe by\d@shad% +} + + +\def\Oval(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@tmpa=\the#1\divide\c@tmpa by2% + \c@tmpb=\the#2\divide\c@tmpb by2% + \begin{picture}(#1,#2)% + \put(\c@tmpa,\c@tmpb){\oval(#1,#2)}% + \put(0.4,0.4){#3}% + \end{picture}% + \global\advance\d@breite by1pt\global\advance\d@hoehe by1pt% +} + + +\def\Strich(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@dash=\d@dash\divide\c@dash by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \c@tmpc=#1\advance\c@tmpc by\c@whole% + \c@tmpd=#2\advance\c@tmpd by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@half,\c@half){\dashbox{\c@dash}(\c@tmpc,\c@tmpd){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} + + +\def\Kasten(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@boxl=\d@boxl\divide\c@boxl by65536\c@boxl=\the\c@boxl% + \c@tmpa=#1\advance\c@tmpa by\c@boxl% + \c@tmpb=#2\advance\c@tmpb by\c@boxl% + \c@tmp=#2% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(0,\c@boxl){\framebox(#1,#2){#3}}% + \put(\c@boxl,0){\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\line(1,0){#1}\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\put(#1,0){\line(0,1){\c@tmp}% + \put(0,\c@tmp){\line(-1,1){\c@boxl}}}}% + \end{picture}% + \global\advance\d@breite by\d@boxl% + \global\advance\d@hoehe by\d@boxl% +} + + + + + +\newbox\env@box% +\newdimen\d@envdp +\newcount\c@hsize +\newcount\c@envdp +\newdimen\d@envb + +\long\def\frameenv{\@ifnextchar [{\@frameenv}{\@frameenv[\textwidth]}} +\long\def\@frameenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endframeenv{% + \egroup% + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \vskip\@wholewidth% + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@tmp){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} + + + +\long\def\shadowenv{\@ifnextchar [{\@shadowenv}{\@shadowenv[\textwidth]}} +\long\def\@shadowenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \advance\textwidth by-\d@shad% + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endshadowenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \d@tmpa=\d@envb + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth \advance\d@envb by-\d@shad + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp + \advance\d@hoehe by2\@wholewidth \advance\d@hoehe by\d@shad + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@shad =\d@shad \divide\c@shad by65536 + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \advance\d@tmpa by-2\d@shad + \c@xoff =\d@tmpa \divide\c@xoff by65536 + \advance\c@xoff by\c@shad \advance\c@xoff by-1 + \advance\d@envdp by\@wholewidth + \vskip\@halfwidth + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@shad){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \put(\c@shad,0){\rule{\d@tmpa}{\d@shad}}% + \put(\c@xoff,0){\rule{\d@shad}{\d@envdp}}% + \end{picture}% + \vskip\@halfwidth +} + + +\long\def\dashenv{\@ifnextchar [{\@dashenv}{\@dashenv[\textwidth]}} +\long\def\@dashenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\enddashenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \advance\d@envdp by\@wholewidth + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@dash=\d@dash \divide\c@dash by65536% + \c@whole=\@wholewidth \divide\c@whole by65536 + \c@half=\@halfwidth \divide\c@half by 65536 + \noindent\unitlength 1pt + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@half,\c@whole){\dashbox{\c@dash}(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} + + +\long\def\ovalenv{\@ifnextchar [{\@ovalenv}{\@ovalenv[\textwidth]}}% +\long\def\@ovalenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-4\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\endovalenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \@wholewidth=0.4pt + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by4\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@tmpa=\c@hsize \divide\c@tmpa by2% + \c@tmpb=\c@envdp \divide\c@tmpb by2% + \d@tmpa=2\fboxsep \advance\d@tmpa by\@wholewidth + \c@xoff=\d@tmpa \divide\c@xoff by65536% + \advance\d@tmpa by\dp\env@box + \c@yoff=\d@tmpa \divide\c@yoff by65536% + \unitlength 1pt\noindent + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmpa,\c@tmpb){\oval(\c@hsize,\c@envdp)} + \put(\c@xoff,\c@yoff){\box\env@box}% + \end{picture}% +} diff -r cca1d0bf491c -r 612de2705907 proceeding/reference.bib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/proceeding/reference.bib Tue Feb 20 12:45:39 2018 +0900 @@ -0,0 +1,26 @@ +@Misc{kaito:2015, + author = "{徳森 海斗, 河野真治}", + title = "LLVM Clang 上の Continuation based C コンパイラ の改良", + journal = "琉球大学工学部情報工学科平成 27 年度学位論文", + year = 2015 +} + +@Misc{gears, + author = "{伊波立樹, 東恩納琢偉, 河野真治}", + title = "Code Gear、Data Gear に基づく OS のプロトタイプ", + journal = "情報処理学会システムソフトウェアとオペレーティング・システム研究会", + year = 2016 +} + +@Misc{kokubo:2016, + author = "{小久保翔平, 河野真治}", + title = "Code Segment と Data Segment を持つ Gears OS の設計", + year = 2016 +} + +@Misc{llvm, + author = "{The LLVM Compiler Infrastructure}", + howpublished = "\url{http://llvm.org}" +} + +