LLVM

LLVM 공식 사이트(영어)

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them. The name "LLVM" itself is not an acronym; it is the full name of the project.
LLVM프로젝트는 모듈식의 재사용 가능한 컴파일러와 툴체인의 집합입니다. 이 이름에도 불구하고 LLVM은 기존의 가상 머신과는 그것을 만드는데 도움이 될 수 있다는 점을 빼고는 거의 관련이 없습니다. "LLVM"이라는 이름은 약자가 아니며 그것이 프로젝트의 전체 이름입니다.

-llvm.org 에서 발췌-

1 LLVM

1.1 LLVM 프로젝트 목록

현재 LLVM 프로젝트는 LLVM코어와 서브 프로젝트로 나뉘는데, 그 목록은 다음과 같다. 이 외에도 서브 프로젝트는 더 있으나, 여기서는 홈페이지 메인페이지에 나와있는 프로젝트만 설명하기로 한다.

LLVM Core
Clang
dragonegg
LLDB
libc++
conpiler-rt
OpenMP
vmkit
polly
libclc
klee
SAFECode
lld

하위 항목들은 추가 바람

1.1.1 LLVM Core

LLVM IR[1]을 이용하여 언어와 아키텍쳐에 상관 없는 최적화를 지원한다. LLVM IR은 당연히어셈블리에 근접한 언어로, 문서화가 잘 되어있으며 이걸 실행하는 JIT도 포함되어 있어서 에뮬레이터에서 JIT 구현할때 꽤나 많이 쓰인다.

1.1.2 Clang

Clang은 libclang과 그 프론트엔드로 구성되어 있으며. C/C++ 컴파일러이다. 컴파일러 속도 비교할때 항상 등장하는 컴파일러로, GCC와 비교했을때 속도, 최적화 그 어느것 하나 꿀리지 않는다고 한다.

1.1.3 dragonegg

1.1.4 LLDB

1.1.5 libc++

1.1.6 compiler-rt

1.1.7 OpenMP

해당 항목 참조

1.1.8 vmkit

1.1.9 polly

1.1.10 libclc

1.1.11 SAFECode

1.1.12 lld

  1. LLVM intermidate representation; LLVM 중간 표현