LLVM
A Quick Introduction to Classical Compiler Design
- LLVM์ ์ปดํ์ผ๋ฌ์ ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ก ์ฌ์ฉ๋๊ณ ์๋ค.
- ์ ํต์ ์ธ ์ปดํ์ผ๋ฌ๋ ํ๋ก ํธ์๋, ์ตํฐ๋ง์ด์ , ๋ฐฑ์๋ three-phase ์ผ์ฒดํ ๊ตฌ์กฐ๋ก ์ค๊ณ๋๋ค.

- ํ๋ก ํธ์๋: ์์ค ์ฝ๋ ํ์ฑ, ์๋ฌ ์ฒดํฌ, AST ์์ฑ
- ์ตํฐ๋ง์ด์ : ๋ถํ์ํ ์ฐ์ฐ ์ ๊ฑฐ ๋ฑ ์ฑ๋ฅ ๊ฐ์ ์ ์ํ ๊ฐ์ข
๋ณํ
- ๋ฐฑ์๋: target instruction set์ ์ฝ๋ ๋งคํ, ๋ ์ง์คํฐ ํ ๋น, ๋ช
๋ น ์ค์ผ์ค๋ง
- ์ ํต์ ์ธ ์ค๊ณ์ ๋ฌธ์ ๋ ํ๋์ ์ปดํ์ผ๋ฌ๊ฐ ์ฌ๋ฌ ์ํคํ
์ฒ ๋๋ ์ธ์ด๋ฅผ ์ง์ํ์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค.
- LLVM์ ์ ํต์ ์ธ ์ค๊ณ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.

- ์์ ๊ฐ์ด retargetableํ๊ฒ ์ค๊ณํ๋ฉด ๊ธฐ์กด ์ตํฐ๋ง์ด์ ์ ๋ฐฑ์๋๋ฅผ ๊ทธ๋๋ก ๋ ์ฑ๋ก ์๋ก์ด ํ๋ก ํธ์๋๋ง์ ์ถ๊ฐํด ์ ์ธ์ด๋ฅผ ์ง์ํ ์ ์๋ค.
Existing Language Implementations
- ์ด๋ฌํ ๋ชจ๋ธ์ ์ธ ๊ฐ์ง ์ฃผ์ ์ฑ๊ณต ์คํ ๋ฆฌ๊ฐ ์๋ค.
- ์๋ฐ์ .NET ๊ฐ์ ๋จธ์ - JIT ์ปดํ์ผ๋ก ์ ๊ณต, ๋ฐํ์ ์ง์, ์ ์ ์๋ ๋ฐ์ดํธ์ฝ๋.
- ์์ค๋ฅผ C ์ฝ๋๋ก ๋ณํํ๊ณ , C ์ปดํ์ผ๋ฌ๋ก ์ปดํ์ผํ๊ธฐ - ์ฌ์ด ์ดํด์ ๊ตฌํ, ํ์ง๋ง ์ด์
ํ ํ๊ฒฝ๊ณผ ๊ฐ์ข
๋ฌธ์ .
- GCC - ๋ง์ ํ๋ก ํธ์๋, ๋ฐฑ์๋ ์ง์, ํ๋์ ์ธ ์ปค๋ฎค๋ํฐ, ์ค๋๋ ์ญ์ฌ.
- GCC๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก์ ์ฌ์ฌ์ฉ๋ ์ ์๋ ์ด์ ๊ฐ ๋ง๋ค.
- ๊ด๋ฒ์ํ ์ ์ญ ๋ณ์ ์ฌ์ฉ, ๋ถ๋ณ์ ๋ํ ์ฝํ ๊ฐ์ , ์๋ชป ์ค๊ณ๋ ์๋ฃ ๊ตฌ์กฐ.
- ๊ฐ์ฅ ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ : ์ด๊ธฐ ์ค๊ณ ๋ฌธ์ ์ ์๋์์ ๋น๋กฏ๋ ๊ณ ์ ํ ๊ตฌ์กฐ์ ๋ฌธ์ .
- ๋ ์ด์ด๋ง ๋ฌธ์ ์ ์ถ์ํ๋ก ์ธํ ๊ณ ํต: ๋ฐฑ์๋๊ฐ ํ๋ก ํธ์๋ AST๋ฅผ ์ฐธ์กฐํด ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ์์ฑํ๋ค.
์ฐธ๊ณ ์๋ฃ
์ด ๋ฌธ์๋ฅผ ์ธ์ฉํ ๋ฌธ์