diff final_main/chapter4.tex @ 6:5b368e14bb64

update
author mir3636
date Tue, 14 Feb 2017 18:48:26 +0900
parents 6d00f6c9bb8a
children
line wrap: on
line diff
--- a/final_main/chapter4.tex	Mon Feb 13 20:29:46 2017 +0900
+++ b/final_main/chapter4.tex	Tue Feb 14 18:48:26 2017 +0900
@@ -16,7 +16,7 @@
 
 \begin{description}
   \item[libast]\mbox{}\\
-    Abstract Syntax Tree (AST) や C の型等をクラスとして利用できるようにしたライブラリ、AST の説明は後述する。% AST は ``-Xclang -ast-dump'' オプションを付加することで表示できる.
+    Abstract Syntax Tree (AST) や C の型等をクラスとして利用できるようにしたライブラリ。%、AST の説明は後述する。% AST は ``-Xclang -ast-dump'' オプションを付加することで表示できる.
   \item[liblex]\mbox{}\\
     字句解析ライブラリ、マクロの展開等の前処理系も担当する。
   \item[libparse]\mbox{}\\
@@ -29,6 +29,23 @@
     ドライバ、各ライブラリを用いて求められた処理を行う。
 \end{description}
 
+これを踏まえて clang が C のコードを LLVM IR に変換する処理について説明する。
+clang が C のコードを LLVM IR に変換する処理の過程を簡潔に図示したものである。
+以下の図 \ref{fig:clangProcess} は clang が C のコードを LLVM IR に変換する処理の過程を簡潔に図示したものである。
+clang は C のソースコードを受け取るとまずその解析を libparser による parser を用いて行い、libsema を用いて 解析結果から AST を構築する。
+そしてその AST を libcodegen を用いて LLVM IR に変換する。
+
+%AST はソースコードの解析結果を保持したツリーである。
+%AST は “-Xclang -ast-dump” というオプションを付加することで表示することもできる。
+
+\begin{figure}[htpb]
+ \begin{center}
+  \scalebox{0.35}{\includegraphics{fig/clangProcess.pdf}}
+ \end{center}
+ \caption{clang の 処理過程}
+ \label{fig:clangProcess}
+\end{figure}
+
 \section{LLVM の基本構造}
 LLVM は LLVM IR をターゲットのアセンブリ言語に直接的に変換を行うわけではない。
 LLVM では、最適化や中間表現の変換を何段階か行う。