2008-10-05 4 views
45

누구나 LLVM, llvm-gcc 또는 Clang의 경험이 있습니까?LLVM의 가장 큰 이점은 무엇입니까?

llvm의 모든 아이디어는 나에게 매우 흥미로웠다. 나는 그것이 어떻게 수행되는지보고 싶어한다. 툴을 생산할 준비가되지 않았다면 툴을 시험해보기 위해 많은 시간을 낭비하고 싶지는 않습니다.

도구에 대한 경험이 있다면 어떻게 생각합니까? 무슨 큰 한계가 있니? 가장 큰 이점은 무엇입니까?

감사합니다.

+1

저는 LLVM의 이점에 대해 논의하는 다음 문서를 작성했습니다. http://llvm4eclipsecdt.googlecode.com/files/Benefits%20of%20the%20LLVM%20compiler%20infrastructure.pdf –

답변

21

나는 LLVM으로 처음 플레이를했고 this tutorial을 통해 일하면서 매우 흥분했다. 상대적으로 쉽게 앱에 JIT를 빌드하는 데 사용할 수있는 아이디어가 나를 부추겼다.

필자는 제한, 안정성, 성능 등과 관련하여 유용한 의견을 제시 할만큼 충분히 깊숙이 들어 가지 못했습니다. 나는 그것이 모든 카운트에 좋음을 이해하지만 그것은 순전히 소문이다.

39

LLVM에 관해 충분한 말을 할 수 없습니다. 그것은 내가 보았던 다른 컴파일러 프로젝트와 비교하여 작업하기가 쉽습니다. 나는 컴파일러 녀석이 아니지만, LLVM이나 clang의 제한 사항에 좌절감을 느낄 때 대개 쉽게 잠입하고 변경하기가 쉽습니다.

우리는 (Nate Begeman, 나 자신 등) 컴파일러 디자인에 실제 경험이없는 PPC 백엔드를 작성했지만 전문가가 아닌 사람들도 쉽게 접근 할 수있었습니다. 우리는 PPC 어셈블리에 대해 잘 알고 있었지만 여전히 여가 시간에 몇 주 내에 PPC 코드를 출력하는 LLVM-gcc를 얻을 수있었습니다. 확실히 가장 만족스런 Hello World 중 하나입니다.

25

저는 여러 달 동안 LLVM을 켜고 껐습니다. 나는 OCaml 프로그래밍 언어의 LLVM 사용을 다루는 두 개의 OCaml Journal 기사를 썼다. OCaml 언어는 컴파일러 작성에 이상적이며 파싱 등을위한 강력하고 성숙한 툴과 라이브러리가 풍부하기 때문에 특히 흥미 롭습니다.

전체적으로 내 경험은 매우 긍정적이었습니다. LLVM은 주석에 표시된대로 작동하며 사용하기가 쉽습니다. 생성 된 코드의 성능은 뛰어납니다. 내가 작성한 프로그램 중 하나는 테스트 한 컴파일러 중 가장 빠른 실행 파일 중 일부를 생성하는 간단한 Brainf * ck 컴파일러였습니다 (GCC 포함).

나는 LLVM을 가진 단지 2 개의 불만이있다. 첫째, 예외를 발생시키는 대신 잘못된 것이 발생할 때마다 abort()를 사용합니다. 이것은 LLVM에서 모든 예외 사용을 제거하려고 노력하고있는 저자의 고의적 인 디자인 결정 이었지만 LLVM을 사용하는 컴파일러를 디버깅하려고 할 때 OCaml에서 백 트레이 트를 가져올 수 없게 만들었습니다 : 프로그램은 LLVM의 텍스트 설명으로 만료됩니다 소스에서 오류가 발생한 위치에 대한 단서는 없습니다. 둘째, LLVM의 컴파일 된 라이브러리는 대단히 큽니다 (20Mb). 나는 이것이 C++에 의해 발생 된 팽창으로 인한 것이라고 생각하지만 컴파일이 고통스럽게 느려집니다.

편집 : LLVM에 대한 저의 연구는 고성능 고수준 가비지 수집 가상 머신을 만드는 데 최고조에 달했습니다. 무료 here을 다운로드하고 해당 benchmarks (와우!)을 확인하십시오. @Alex : BF 컴파일러를 최대한 빨리 얻을 수 있습니다.

+2

BF 컴파일러를 게시 할 수 있습니까? 나는 BF-> C 번역기를 썼다. 하나의 패스로 얻을 수있는만큼 좋고 llvm-gcc는 정말 큰 프로그램에서 상당히 나 빠진다. 그들은 다소 불공평합니다. –

2

당신은 도구에 대해 물었습니다. 이클립스 CDT 용 LLVM 플러그인 (Windows, Linux 및 Mac 용)이 있습니다. 그것은 IDE에 LLVM을 멋지게 통합하고 사용자는 LLVM에 대해 아무 것도 알 필요가 없습니다.빌드 버튼을 누르면 .bc 파일과 실행 파일 (그리고 사용자가 볼 수없는 백그라운드의 중간 파일)을 생성 할 수 있습니다.

최신 버전은 공식 Eclipse 업데이트 사이트를 통해 볼 수 있습니다 : http://download.eclipse.org/releases/mars

그것은 프로그래밍 언어 중에 있으며 "C/C++ LLVM 가족 컴파일러 구축 지원"라는.

관련 문제