TCC

http://bellard.org/tcc/

Tiny C Compiler. Fabrice Bellard가 만든 C컴파일러로, 이름 그대로 아주 작고 빠르다. x86x86-64 바이너리(신이치로하마지 씨가 0.9.25에서 추가했다)를 생성할 수 있으며, GCCClang 같은 다른 자주 쓰이는 컴파일러에 비해서 컴파일 속도는 매우 빠르고 최적화 정도는 매우 낮다(-O1 정도에 대응되는 수준이라 생각하면 된다).

그 기반은 IOCCC 2001에 낸 OTCC라는 2048바이트짜리 C 컴파일러(그 해 "Best abuse of the rules" 상을 받았다)로, 이 코드를 알아 볼 수 있게 바꾸고 기능을 추가하여 실용적으로 만든 것이 TCC이다. OTCC 코드를 보면 알 수 있듯, TCC는 코드를 한 번만 읽은 뒤 바이너리를 생성하는 싱글 패스 컴파일러인데 당연히 최적화는 제한적으로만(상수 전파, 레지스터 할당 정도) 가능하다. 그러나 여전히 사실상 모든 C 코드를 올바르게 컴파일할 수 있기 때문에(심지어 GNUC확장도 일부 지원한다) 그 활용도는 무궁무진한데, 이를테면 실시간으로 리눅스 커널을 컴파일해서 리눅스를 부팅시키는 TCCBOOT 같은(…) 변태적인 프로젝트가 있다.

한때 suckless.org 프로젝트 아이디어 목록에는 TCC를 더 단순하고 더 강력하게 만들자는 목표가 쓰여 있었는데, 나중에 Go언어가 나오면서 그냥 다 사라지고 Go로 다 만들자는 내용으로 바뀌었다. 안습.


도쿠위키DokuWiki-custom(rev 9085d92e02)을 씁니다.
마지막 수정 2011-07-30 01:21 | 작성자 lifthrasiir