LLVM이란?

LLVM/주절주절 2019. 9. 3. 01:52
LLVM은 오픈소스 컴파일러 개발용 종합 패키지다.

GCC 등의 기존 컴파일러들은 컴파일 과정들인, 코드의 파싱이나 파스트리, 기계어 생성, 코드 최적화 등이 명확한 구분 없이 모놀리하게 설계되어있다.
이 말은 뭐냐하면, 유지보수하기가 더럽다는 말이다.
게다가 특정 과정 등은 독립적으로 관리해야 더 효율적으로 작동할 수 있는데... 어휘분석과 구문분석 등이 이에 속한다.

여튼 LLVM은 이러한 고질적인 문제들을 해결하기 위해서 탄생했다.
LLVM은 C++로 작성되어 유지보수가 보다 편리하고, 컴파일 과정들을 각각 독립적인 모듈로 제공한다.
그래서 이전에는 컴파일러를 제작하려면 각각의 플랫폼에 맞는 기계어로 치환하도록 일일이 손을 댔어야 했는데 LLVM은 기계어 생성이나 코드 최적화 등의 작업을 알아서 잘 처리해준다.

이런 까닭에 근래에 개발된 컴파일러들은 다수가 이 LLVM으로 제작되었다. Rust, Swift 등등..
게다가 실제 성능도 아주 빼어난 편이다.
LLVM으로 작성된 C/C++ 컴파일러인 Clang은 GCC와 동등하거나, 때로는 앞서는 실행/컴파일 성능을 보여준다고 한다. Rust의 컴파일러도 대체로 C/C++와 동등한 성능을 보인다.

그리고 이름의 뜻은 저수준 가상 머신(Low Level Virtual Machine)인데 특별한 뜻이 있는 건 아니다.
의미부여하지 말라고 공식문서에서도 말한다.


Reference
"LLVM, [위키백과]"
"메이유르 판디&슈오르 사르다 『LLVM Cookbook』, PACKT"

'LLVM > 주절주절' 카테고리의 다른 글

[LLVM-IR] Hello World 찍기  (0) 2019.09.03

설정

트랙백

댓글