1 \section{Low Level Virtual Machine}
2 The Low Level Virtual Machine project (LLVM, \cite{LLVM}, \cite{Lattner:MSThesis02})
3 is a framework for compiler construction. It provides its own intermediate
4 representation, the LLVM IR. This is a simple language that can be used to
5 expres any program in a static single assignment (SSA) form that is easy to
6 reason with and transform.
8 Additionally, LLVM provides a host of libraries to work with this IR. There is
11 \item reading, writing, generating and manipulating LLVM IR.
12 \item transformation (optimization) of LLVM IR.
13 \item codegeneration for various architectures.
14 \item just-in-time codegeneration.
17 In addition, the LLVM project provides two frontends for generating LLVM IR:
18 llvm-gcc, which uses gcc to compile a lot of languages with a LLVM backend (from
19 the gcc point of view) and clang, which is a completely new project designed to
20 parse and emit LLVM IR for all c-like languages (C, ObjC, C++).