LLVM¶
Table of Contents
(LLVM 用 reStructuredText 跟 Sphinx 在寫 Documentation)
Introduction¶
LLVM 是 Chris Lattner 於 2000 年在 UIUC 展開、發表於 2004 年的碩士論文專案, 原名為 「Low Level Virtual Machine」, 當中使用到的概念取自於 2003 年發表的論文 「 LLVA: A Low-level Virtual Instruction Set Architecture 」, 於 2004 年發表 LLVM 論文 「 LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation 」, 後來由於發展不限於 Virtual Machine, 使用原名會造成誤解, 所以名稱改為 LLVM 。
LLVM 使用 University of Illinois/NCSA Open Source License
條款釋出,
使用 SVN 作為主要開發的版本工具,
每次新 release 即升一個小版號,
直到小版號超過九,
就升一次大版號。
LLVM Linker¶
lld
llc¶
$ llc --version
LLVM (http://llvm.org/):
LLVM version 3.5.2
Optimized build.
Built Apr 23 2015 (08:23:12).
Default target: x86_64-unknown-linux-gnu
Host CPU: core-avx-i
Registered Targets:
aarch64 - AArch64 (little endian)
aarch64_be - AArch64 (big endian)
arm - ARM
arm64 - AArch64 (little endian)
arm64_be - AArch64 (big endian)
armeb - ARM (big endian)
cpp - C++ backend
hexagon - Hexagon
mips - Mips
mips64 - Mips64 [experimental]
mips64el - Mips64el [experimental]
mipsel - Mipsel
msp430 - MSP430 [experimental]
nvptx - NVIDIA PTX 32-bit
nvptx64 - NVIDIA PTX 64-bit
ppc32 - PowerPC 32
ppc64 - PowerPC 64
ppc64le - PowerPC 64 LE
r600 - AMD GPUs HD2XXX-HD6XXX
sparc - Sparc
sparcv9 - Sparc V9
systemz - SystemZ
thumb - Thumb
thumbeb - Thumb (big endian)
x86 - 32-bit X86: Pentium-Pro and above
x86-64 - 64-bit X86: EM64T and AMD64
xcore - XCore
Idea¶
- LLVM For Writing Database
- database framework ?
- SQL with JIT support ?
- [2013] Building a Modern Database Using LLVM
- Impala - Real-time Query for Hadoop
- SQLite with LLVM JIT ?
- http://sqlite.org/src/doc/trunk/README.md
- mirror : http://repo.or.cz/sqlite.git
- LLVM for Concurrency
LLVM for lock-free
code suggestion
Reference¶
LLVM¶
- Wikipedia - LLVM
- [Book] Getting Started with LLVM Core Libraries
- AOSA - LLVM
- LLVM: Implementing a Language