요즘 비교적 현대 프로그래밍 언어에서 LLVM이라는 키워드를 흔히 볼 수 있습니다.

제가 주로 사용하는 언어인 Swift와 관심있는 언어인 RustLLVM 컴파일러를 사용하고 있습니다.
JetBrains의 Kotlin/NativeLLVM을 기반으로 두고 개발되고 있습니다.
“도대체 LLVM이 뭐길래? 무슨 장점을 가지고 있길래?” 하는 궁금증에 LLVM을 살펴보고자 합니다.

wyvern

LLVM의 공식 로고 wyvern

iOS를 개발하다 보면 자주 보게되는 녀석이 있습니다 바로 LLVM 입니다.
LLVMSwift의 컴파일러로서 Swift를 기계가 인식할 수 있는 기계어로 번역하는 역할을 수행하고 있습니다.

LLVMSwift의 아버지인 크리스 래트너가 만들었고,
초창기 LLVM은 Low Level Virtual Machine의 줄임말이었지만
LLVM이 성장하고, 다양하게 사용되며 현재 LLVM은 프로젝트의 이름 그 자체가 되었습니다.

일반적인 컴파일러와 달리 LLVM은 모듈화 되어 있습니다.
크게 나누어 프론트엔드와 백엔드로 나누어지고 각기 서로 다른 역할을 수행하고 있습니다.
따라서 LLVM은 컴파일러 툴체인이라고도 할 수 있습니다.
다음 시간에는 LLVM의 흐름과 LLVM 어셈블리 IR(Intermediate Representation)에 대해 알아봅시다.