System Programming/Compiler

    LLVM tutorial #0 Architecture

    전통적인 컴파일러는 소스 언어와 타겟 아키텍쳐가 강하게 결합되어있어 새로운 언어나 새로운 하드웨어를 지원하기 위해선 컴파일러 전체를 다시 작성해야했다.이 구조의 문제점은 당연히 N개의 언어와 M개의 타겟을 지원하려면 N × M개의 컴파일러가 필요하다는 것이다. LLVM 3단계 설계LLVM을 활용하면 N + M개만 필요하다.전통적 방식:C 컴파일러 → x86 코드C 컴파일러 → ARM 코드Rust 컴파일러 → x86 코드Rust 컴파일러 → ARM 코드(4개 필요)LLVM 방식:C → LLVM IR ┐Rust → LLVM IR ┼→ LLVM IR → x86 ┼→ LLVM IR → ARM(2개 프론트엔드 + 2개 백엔드 = 4개) 각 단계를 간단히 설명하자면 1단계 Frontend역할..