Mercurial > hg > Papers > 2018 > tobaru-thesis
changeset 3:f3c9c9e2d66b
予稿修正
author | tobaru |
---|---|
date | Wed, 21 Feb 2018 11:26:10 +0900 |
parents | d5507629a56b |
children | d0d503dd3fd5 |
files | paper/main.aux paper/main.lof paper/main.log paper/main.lot paper/main.pdf paper/main.synctex.gz paper/main.tex paper/main.toc proceeding/last-proceeding.aux proceeding/last-proceeding.log proceeding/last-proceeding.pdf proceeding/last-proceeding.synctex.gz proceeding/last-proceeding.tex |
diffstat | 13 files changed, 267 insertions(+), 199 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/main.aux Tue Feb 20 14:28:27 2018 +0900 +++ b/paper/main.aux Wed Feb 21 11:26:10 2018 +0900 @@ -21,39 +21,42 @@ \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{toc}{\contentsline {chapter}{\numberline {第4章}CbCの実装}{6}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}LLVM/Clang}{6}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第5章}OSX}{7}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\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}} +\newlabel{chap:OSX}{{5}{7}} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}LLVM}{7}} +\newlabel{OSXCrossCompile}{{5.1}{7}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.1}CrossCompileの例}{7}} +\newlabel{OSXfile}{{5.2}{7}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {5.2}生成したファイル}{7}} +\@writefile{toc}{\contentsline {section}{\numberline {5.2}xv6}{8}} +\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces OSX}}{8}} +\newlabel{fig:OSX}{{5.1}{8}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第6章}Linux}{9}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\@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{toc}{\contentsline {section}{\numberline {6.1}LLVM}{9}} +\newlabel{LinuxCCrossCompile}{{6.1}{9}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {6.1}Linux上でC言語ファイルのCrossCompile}{9}} +\newlabel{LinuxLLVMmake}{{6.2}{10}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {6.2}Linux上のLLVM makeファイル}{10}} +\@writefile{toc}{\contentsline {section}{\numberline {6.2}GCC}{11}} +\newlabel{Linux_GCC_CrossCompile}{{6.3}{11}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {6.3}LinuxでのGCC CrossCompile}{11}} +\@writefile{toc}{\contentsline {section}{\numberline {6.3}xv6}{12}} +\@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces OSX Linux VM}}{12}} +\newlabel{fig:OSX_Linux_VM}{{6.1}{12}} +\@writefile{toc}{\contentsline {chapter}{\numberline {第7章}今後の課題}{13}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\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}} +\newlabel{chap:Task}{{7}{13}} +\@writefile{toc}{\contentsline {chapter}{謝辞}{14}} +\newlabel{chap:Acknowledgments}{{7}{14}} +\@writefile{toc}{\contentsline {chapter}{参考文献}{15}} +\newlabel{chap:References}{{7}{15}} +\@writefile{toc}{\contentsline {chapter}{付録}{16}}
--- a/paper/main.lof Tue Feb 20 14:28:27 2018 +0900 +++ b/paper/main.lof Wed Feb 21 11:26:10 2018 +0900 @@ -4,7 +4,8 @@ \contentsline {figure}{\numberline {3.1}{\ignorespaces T図形の例}}{5} \contentsline {figure}{\numberline {3.2}{\ignorespaces Raspberry Pi}}{5} \addvspace {10\p@ } -\contentsline {figure}{\numberline {4.1}{\ignorespaces OSX}}{7} +\addvspace {10\p@ } +\contentsline {figure}{\numberline {5.1}{\ignorespaces OSX}}{8} \addvspace {10\p@ } -\contentsline {figure}{\numberline {5.1}{\ignorespaces OSX Linux VM}}{11} +\contentsline {figure}{\numberline {6.1}{\ignorespaces OSX Linux VM}}{12} \addvspace {10\p@ }
--- a/paper/main.log Tue Feb 20 14:28:27 2018 +0900 +++ b/paper/main.log Wed Feb 21 11:26:10 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) 20 FEB 2018 12:53 +This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.5.28) 21 FEB 2018 10:14 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -223,48 +223,59 @@ File: images/RaspberryPi_2.pdf Graphic file (type pdf) <images/RaspberryPi_2.pdf> [5] 第 4 章 -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 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 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 331. + +Overfull \hbox (9.48952pt too wide) in paragraph at lines 314--315 +[]\OT1/cmr/m/n/12 Clang \JY1/mc/m/n/12 は 、 高速なコンパイルを目的とした \OT1/ +cmr/m/n/12 LLVM \JY1/mc/m/n/12 をバ ッ クエンドとした \OT1/cmr/m/n/12 C/C++/Obj +ective- + [] + [6 ] +第 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 340. +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 340. +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 340. +[7 + +] File: images/OSX_2.pdf Graphic file (type pdf) - <images/OSX_2.pdf> [7] -第 5 章 -LaTeX Font Info: Try loading font information for OMS+cmr on input line 385. + <images/OSX_2.pdf> [8] +第 6 章 +LaTeX Font Info: Try loading font information for OMS+cmr on input line 394. (/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 +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 394. + [9 -] [9] [10] +] [10] [11] File: images/OSX_Linux_VM_2.pdf Graphic file (type pdf) -<images/OSX_Linux_VM_2.pdf> [11] -第 6 章 -[12 - -] [13 +<images/OSX_Linux_VM_2.pdf> [12] +第 7 章 +[13 ] [14 ] [15 +] [16 + ] (./main.aux) ) Here is how much of TeX's memory you used: - 2673 strings out of 493693 - 36322 string characters out of 6149787 + 2689 strings out of 493693 + 36488 string characters out of 6149787 231239 words of memory out of 5000000 - 6203 multiletter control sequences out of 15000+600000 + 6219 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,1133s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on main.dvi (18 pages, 30304 bytes). +Output written on main.dvi (19 pages, 32508 bytes).
--- a/paper/main.lot Tue Feb 20 14:28:27 2018 +0900 +++ b/paper/main.lot Wed Feb 21 11:26:10 2018 +0900 @@ -5,3 +5,4 @@ \addvspace {10\p@ } \addvspace {10\p@ } \addvspace {10\p@ } +\addvspace {10\p@ }
--- a/paper/main.tex Tue Feb 20 14:28:27 2018 +0900 +++ b/paper/main.tex Wed Feb 21 11:26:10 2018 +0900 @@ -307,6 +307,15 @@ +\chapter{CbCの実装} +\section{LLVM/Clang} +LLVM は任意のプログラミング言語の静的コンパイルと動的コンパイルの両方をサポートできる事を目的としたプロジェクトから始まった、モジューラと再利用可能なcompilerとツールチェーン技術の集まりである。 + +Clangは、高速なコンパイルを目的としたLLVMをバックエンドとしたC/C++/Objective-Cのcompilerである。 + + +実装方法としては、makeする際に + \chapter{OSX} \label{chap:OSX} @@ -335,7 +344,7 @@ このファイルは Raspberry Pi 上で実行する事ができる。 -\section{GCC} +% \section{GCC} @@ -395,7 +404,7 @@ Makefile の一部をCode\ref{LinuxLLVMmake} に示す。 \begin{lstlisting}[frame=lrbt,label=LinuxLLVMmake,caption={Linux上のLLVM makeファイル}] - QEMU = qemu-system-arm +QEMU = qemu-system-arm include makefile.inc CC = /usr/local/cbclang/bin/clang @@ -404,19 +413,25 @@ 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 +# CFLAGS = -march=armv6 -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -Werror -I. -g -O0 +CFLAGS = -target arm-linux-gnueabihf -march=armv7a -fno-pic -static -fno-builtin -fno-strict-aliasing -Wall -I. -I ../cbclang/arm -g -O0 +LDFLAGS = --noinhibit-exec +# ASFLAGS = -march=armv6 +ASFLAGS = -target arm-linux-gnueabihf + +LIBGCC = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + +# link the libgcc.a for __aeabi_idiv. ARM has no native support for div +LIBS =/net/open/RaspberryPi/rasbian-img/usr/lib/gcc/arm-linux-gnueabihf/6/libgcc.a -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 CFLAGS \item ASFLAGS \end{itemize}
--- a/paper/main.toc Tue Feb 20 14:28:27 2018 +0900 +++ b/paper/main.toc Wed Feb 21 11:26:10 2018 +0900 @@ -5,15 +5,16 @@ \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} +\contentsline {chapter}{\numberline {第4章}CbCの実装}{6} +\contentsline {section}{\numberline {4.1}LLVM/Clang}{6} +\contentsline {chapter}{\numberline {第5章}OSX}{7} +\contentsline {section}{\numberline {5.1}LLVM}{7} +\contentsline {section}{\numberline {5.2}xv6}{8} +\contentsline {chapter}{\numberline {第6章}Linux}{9} +\contentsline {section}{\numberline {6.1}LLVM}{9} +\contentsline {section}{\numberline {6.2}GCC}{11} +\contentsline {section}{\numberline {6.3}xv6}{12} +\contentsline {chapter}{\numberline {第7章}今後の課題}{13} +\contentsline {chapter}{謝辞}{14} +\contentsline {chapter}{参考文献}{15} +\contentsline {chapter}{付録}{16}
--- a/proceeding/last-proceeding.aux Tue Feb 20 14:28:27 2018 +0900 +++ b/proceeding/last-proceeding.aux Wed Feb 21 11:26:10 2018 +0900 @@ -1,11 +1,11 @@ \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{toc}{\contentsline {section}{\numberline {1}Raspberry Pi上 の Gears OS}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {2}CbC のmake時間の比較}{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}} +\@writefile{toc}{\contentsline {section}{\numberline {3}CrossCompile}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {4}xv6}{1}} +\@writefile{toc}{\contentsline {section}{\numberline {5}Linux CrossCompile}{1}} \citation{*} \bibstyle{junsrt} \bibdata{reference} @@ -13,12 +13,10 @@ \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}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces 図の例}}{2}} +\newlabel{images:examples}{{1}{2}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces OSX Linux VM}}{2}} +\newlabel{images:OSX_Linux_VM}{{2}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {6}LLVM CrossCompile}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {7}GCC CrossCompile}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {8}今後の課題}{2}}
--- a/proceeding/last-proceeding.log Tue Feb 20 14:28:27 2018 +0900 +++ b/proceeding/last-proceeding.log Wed Feb 21 11:26:10 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) 20 FEB 2018 14:27 +This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.5.28) 21 FEB 2018 11:03 entering extended mode restricted \write18 enabled. file:line:error style messages enabled. @@ -138,6 +138,36 @@ \@float@everytoks=\toks17 \@floatcapt=\box45 ) +(/usr/local/texlive/2016/texmf-dist/tex/latex/listings/listings.sty +\lst@mode=\count114 +\lst@gtempboxa=\box46 +\lst@token=\toks18 +\lst@length=\count115 +\lst@currlwidth=\dimen140 +\lst@column=\count116 +\lst@pos=\count117 +\lst@lostspace=\dimen141 +\lst@width=\dimen142 +\lst@newlines=\count118 +\lst@lineno=\count119 +\lst@maxwidth=\dimen143 + +(/usr/local/texlive/2016/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2015/06/04 1.6 (Carsten Heinz) +\c@lstnumber=\count120 +\lst@skipnumbers=\count121 +\lst@framebox=\box47 +) +(/usr/local/texlive/2016/texmf-dist/tex/latex/listings/listings.cfg +File: listings.cfg 2015/06/04 1.6 listings configuration +)) +Package: listings 2015/06/04 1.6 (Carsten Heinz) + +(./jlisting.sty +Package: jlisting 2006/02/20 0.2 (Thor) +\lst@nextchar=\count122 +\lst@inputfile=\read1 +) ! LaTeX Error: File `dummy.tex' not found. @@ -152,42 +182,41 @@ (./last-proceeding.aux) \openout1 = `last-proceeding.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: Checking defaults for OML/cmm/m/it on input line 26. +LaTeX Font Info: ... okay on input line 26. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 26. +LaTeX Font Info: ... okay on input line 26. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 26. +LaTeX Font Info: ... okay on input line 26. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 26. +LaTeX Font Info: ... okay on input line 26. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 26. +LaTeX Font Info: ... okay on input line 26. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 26. +LaTeX Font Info: ... okay on input line 26. +LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 26. +LaTeX Font Info: ... okay on input line 26. +LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 26. +LaTeX Font Info: ... okay on input line 26. +\c@lstlisting=\count123 LaTeX Font Info: External font `cmex10' loaded for size -(Font) <12> on input line 42. +(Font) <12> on input line 43. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <8> on input line 42. +(Font) <8> on input line 43. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <6> on input line 42. +(Font) <6> on input line 43. 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. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 43. 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. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 43. 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. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 45. 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. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 45. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <7> on input line 121. +(Font) <7> on input line 124. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <5> on input line 121. -File: images/examples_2.pdf Graphic file (type pdf) - <images/examples_2.pdf> +(Font) <5> on input line 124. File: images/emblem-bitmap.pdf Graphic file (type pdf) <images/emblem-bitmap.pdf> @@ -200,37 +229,22 @@ ] -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 163. -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 163. - - -LaTeX Warning: Reference `images:RaspberryPi' on page 2 undefined on input line - 163. - -File: images/RaspberryPi_2.pdf Graphic file (type pdf) -<images/RaspberryPi_2.pdf> -File: images/OSX_2.pdf Graphic file (type pdf) - <images/OSX_2.pdf> +File: images/examples_2.pdf Graphic file (type pdf) + <images/examples_2.pdf> File: images/OSX_Linux_VM_2.pdf Graphic file (type pdf) <images/OSX_Linux_VM_2.pdf> -Overfull \hbox (12.99443pt too wide) in paragraph at lines 208--209 +Overfull \hbox (12.99443pt too wide) in paragraph at lines 213--214 [] [] -(./last-proceeding.bbl) [2] (./last-proceeding.aux) - -LaTeX Warning: There were undefined references. - - ) +(./last-proceeding.bbl) [2] (./last-proceeding.aux) ) Here is how much of TeX's memory you used: - 1282 strings out of 493693 - 15922 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 + 2471 strings out of 493693 + 33527 string characters out of 6149787 + 103608 words of memory out of 5000000 + 6024 multiletter control sequences out of 15000+600000 + 14789 words of font info for 58 fonts, out of 8000000 for 9000 929 hyphenation exceptions out of 8191 - 27i,15n,43p,451b,365s stack positions out of 5000i,500n,10000p,200000b,80000s + 27i,15n,43p,451b,369s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on last-proceeding.dvi (2 pages, 11592 bytes). +Output written on last-proceeding.dvi (2 pages, 12280 bytes).
--- a/proceeding/last-proceeding.tex Tue Feb 20 14:28:27 2018 +0900 +++ b/proceeding/last-proceeding.tex Wed Feb 21 11:26:10 2018 +0900 @@ -19,9 +19,10 @@ \setlength{\textheight}{261mm} \setlength{\footskip}{0mm} \pagestyle{empty} +\usepackage{listings, jlisting} \input{dummy.tex} -\renewcommand{\abstractname}{概要} +\renewcommand{\abstractname}{Abstract} \begin{document} \title{Gears OS on Raspberry Pi} %\title{Supporting NAT in Screen Sharing System TreeVNC} @@ -41,7 +42,7 @@ \end{abstract} ] -\section{Raspberry Pi上での Gears OS} +\section{Raspberry Pi上 の Gears OS} 当研究室では CbC(Continuation base C) とCbC を用いて実装する GearsOS の研究を行っている。 @@ -61,8 +62,10 @@ しかし、メモリの関係上 RaspberryPi 上で CbC の make を行うと、 かなりの時間がかかる。 -解決案として、OSX 上で CrossCompile を行う方法と、Linux 環境で -CrossCompile を行う方法を提案する。 +解決案として、別のOSで CrossCompile を行う方法がある。 +CbCには、LLVM/Clang上に実装したものと、GCCで実装したものがある。Linuxに実装されたLLVMとGCCのCrossCompileの手法について提案する。 + + % \section{CbC} % Gears OS の実装には LLVM/Clang 上に実装した CbC(Continuation based C)を用いる。\\ @@ -91,12 +94,7 @@ - - - - - -\section{Raspberry Pi 上での実装} +\section{CbC のmake時間の比較} % Raspberry Pi の OS である Raspbian ではメモリが 256MB なので % Raspberry Pi 上で直接 CbC をコンパイルするには時間がかかる。qemu によるメモリの拡張もできないので、別の手法で Raspberry Pi 上に CbC を実装する方が好ましい。 Raspberry Pi 1 のメモリは 256MB と小さいため、 CbC をmakeすることができない。 @@ -104,25 +102,32 @@ -make時間の比較として研究室のサーバでメモリ16GBのfireflyと学科のサーバの一つでLinux環境であるメモリ756GBのDALMOREを用いる。 +make時間の比較として研究室のメモリ16Gのサーバでと学科のサーバの一つでLinux環境であるメモリ756GBのDell PowerEdge630 を用いる。 なお、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 + \begin{tabular}{| c | c | r | r |} \hline + メモリ& コア & 時間 & 速度比較 \\ \hline \hline + 1GB & 4Core & 15時間11分06秒 & 1.00倍 \\ \hline + 16GB & 12Core& 2時間16分06秒 & 6.69倍 \\ \hline + 756GB & 72Core & 2分26秒 & 374.42倍 \\ \hline \end{tabular} } \caption{make時間の比較} \label{tab:make_time} \end{table} +\break + \section{CrossCompile} CrossCompile を行うことで make 時間の問題を解決する方法がある。 % CrossCompile とは、別の OS で実行可能なコードを生成するコンパイルの手法である。 @@ -136,61 +141,48 @@ 別の手法で Raspberry Pi 上に CbC を実装する方が好ましい。 - +\section{xv6} マサチューセッツ工科大の大学院生向け講義の教材として使うために、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} +% Raspberry Pi は ARM のコードを生成する。CbCはCによって記述されているため、Cから ARM.o を生成し、ARM.o から a.out を出力する。 +% Raspberry Pi 上でxv6を実装し、cbcからa.outを出力するまでの過程を図\ref{images:RaspberryPi}に示す。 -\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} +% \begin{figure}[htpb] + % \begin{center} + % \scalebox{0.17}{\includegraphics{images/RaspberryPi_2.pdf}} + % \end{center} + % \caption{Raspberry Pi} + % \label{images:RaspberryPi} +% \end{figure} -\section{OSX CrossCompile} -OSX上でxv6を実装する場合、Cから mach-o のバイナリファイルが生成される。 - この時、出力は mach-o になるので、mach-o の - loader 作ることで CbC が動かせるようになる。 +% \section{OSX CrossCompile} +% OSX上でxv6を実装する場合、Cから mach-o のバイナリファイルが生成される。 + % この時、出力は mach-o になるので、mach-o の + % loader 作ることで CbC が動かせるようになる。 - OSX 上で行えるためコンパイルの速度向上が望める。 -xv6を実装しCbCからa.outを出力するまでの過程を、図\ref{fig:OSX}に示す。 +% 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} +% \begin{figure}[htpb] + % \begin{center} + % \scalebox{0.35}{\includegraphics{images/OSX_2.pdf}} + % \end{center} + % \caption{OSX} + % \label{fig:OSX} +% \end{figure} - +% この手法に関して、arm-linux-gnueabihf-gccというツールチェーンを使用し、Cで書かれたファイルにCrossCompileを行い、RaspberryPi上で実行できるARMのコードを生成するところまで実装を行なった。 \section{Linux CrossCompile} OSX と別に Linux 環境で CbC を動かした後に、Raspberry Pi に載せる手法がある。 @@ -199,18 +191,50 @@ また、Linux 用の gcc を CbC に書き直す際に、gcc7 に書き直せば linker がそのまま使えるので、xv6 で動くようになる。 - - CbCはCによって記述されているので、Cから ARM.oのバイナリを生成し、ARM.oからa.outを出力する。 -OSX上に立ち上げたLinux 上で xv6を実装するまでの過程を、図\ref{fig:OSX_Linux_VM}に示す。 + CbC を Raspberry Pi で動かすためのアプローチの手法を、I と T の形をした図の組み合わせによって説明を行う。I の上部分に cbclang や Xv6 などのソースコード名を、下部分にその機能の記述言語を記してある。T の下にある I は特別で、上に VM 下に VM を乗せている OS が記されている。 T の上部分は左に入力されるファイル、右に出力されるその機能によって出力されるファイルが記され、下部分にその機能の記述言語が記されている。 + +例として、cbclang のソースコード(I)と、 Raspberry Pi 上の clang (T) を図\ref{images:examples} に示す。 + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.35}{\includegraphics{images/examples_2.pdf}} + \end{center} + \caption{図の例} + \label{images:examples} +\end{figure} + + + % CbCはCによって記述されているので、Cから ARM.oのバイナリを生成し、ARM.oからa.outを出力する。 +% OSX上に立ち上げたLinux 上で xv6を実装するまでの過程を、図\ref{fig:OSX_Linux_VM}に示す。 +Raspberry Pi は ARM のコードを生成する。Linux上でもARM.oのコードを生成するようにCrossCompileを行えば、RaspberryPiでも実行可能なファイルを出力することができる。 OSX上に立ち上げたLinux環境のVMでCbCが実行可能なxv6を実装するまでの過程を図\ref{images: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} + \label{images:OSX_Linux_VM} \end{figure} + + +\section{LLVM CrossCompile} +LLVM は任意のプログラミング言語の静的コンパイルと動的コンパイルの両方をサポートできる事を目的としたプロジェクトから始まった、モジューラと再利用可能なcompilerとツールチェーン技術の集まりである。 + +Clangは高速なコンパイルを目的としたLLVMをバックエンドとした、C/C++/Objective-Cのcompilerである。 + + +Makefileに変更を加えることで LLVM/Clang 上に実装されたCbCでRaspberry Piで実行できるようなARMのコードを生成できるように実装した。 +CbCをmakeした際に作られるclangを使い、ARMのコードを生成できるようにtargetオプションでarm-linux-gnueabihfを指定する。 + + +\section{GCC CrossCompile} +GCC は C/C++/Objective-Cなどを様々な言語をコンパイルすることのできるcompiler である。 + +arm-linux-gnu-gcc のコマンドを使うことで、ARMのコードを生成することができる。アセンブラやリンカーに対してもarm-linux-gnu-as や arm-linux-gnu-ld という +ふうに指定していく。 + + % Xv6詳しく \section{今後の課題}