요즘 비교적 현대 프로그래밍 언어에서 LLVM
이라는 키워드를 흔히 볼 수 있습니다.
제가 주로 사용하는 언어인 Swift
와 관심있는 언어인 Rust
도 LLVM
컴파일러를 사용하고 있습니다.
JetBrains의 Kotlin/Native
도 LLVM
을 기반으로 두고 개발되고 있습니다.
“도대체 LLVM
이 뭐길래? 무슨 장점을 가지고 있길래?” 하는 궁금증에 LLVM
을 살펴보고자 합니다.
LLVM의 공식 로고 wyvern
iOS를 개발하다 보면 자주 보게되는 녀석이 있습니다 바로 LLVM
입니다.LLVM
은 Swift
의 컴파일러로서 Swift
를 기계가 인식할 수 있는 기계어로 번역하는 역할을 수행하고 있습니다.
LLVM
은 Swift
의 아버지인 크리스 래트너가 만들었고,
초창기 LLVM
은 Low Level Virtual Machine의 줄임말이었지만LLVM
이 성장하고, 다양하게 사용되며 현재 LLVM
은 프로젝트의 이름 그 자체가 되었습니다.
일반적인 컴파일러와 달리 LLVM
은 모듈화 되어 있습니다.
크게 나누어 프론트엔드와 백엔드로 나누어지고 각기 서로 다른 역할을 수행하고 있습니다.
따라서 LLVM
은 컴파일러 툴체인이라고도 할 수 있습니다.
다음 시간에는 LLVM
의 흐름과 LLVM
어셈블리 IR
(Intermediate Representation)에 대해 알아봅시다.