해결책
나는 LLVM과 함께 초기 놀이를했고 이 튜토리얼 그것이 잠재력에 대해 매우 흥분하게 만들었습니다. 내가 그것을 사용하여 상대적으로 쉽게 앱에 JIT를 만들 수 있다는 아이디어는 저를 스토킹했습니다.
나는 그것의 한계, 안정성, 성능 등에 대해 어떤 종류의 유용한 의견을 제공 할 수있을만큼 깊지 않았습니다. 나는 그것이 모든 카운트에서 좋다는 것을 이해하지만 그것은 순전히 듣는 것입니다.
다른 팁
LLVM에 대해 충분한 좋은 말을 할 수 없습니다. 내가 본 다른 컴파일러 프로젝트에 비해 작업하기가 매우 쉽습니다. 나는 컴파일러 사람이 아니지만 LLVM 또는 Clang의 제한에 좌절하면 일반적으로 다이빙을하고 변경하기가 매우 쉽습니다.
우리 (Nate Begeman, 나 자신 및 몇몇 다른 사람들)는 컴파일러 디자인에 대한 실제 경험이없는 PPC 백엔드를 썼지 만 비전거가 접근 할 수있을만큼 간단하게 보였습니다. 우리는 PPC 어셈블리에 꽤 익숙했지만 여전히 여가 시간의 몇 주 동안 LLVM-GCC가 PPC 코드를 출력 할 수있었습니다. 확실히 내가 가장 만족스러운 Hello World 's 중 하나입니다.
나는 지금 몇 달 동안 LLVM을 켜고 끄고 있습니다. 나는 두 가지를 썼다 OCAML 저널 LLVM의 사용을 다루는 기사 OCAML 프로그래밍 언어. OCAML 언어는 컴파일러를 작성하는 데 이상적이며 구문 분석을위한 강력하고 성숙한 도구와 라이브러리가 풍부하기 때문에 특히 흥미 롭습니다.
전반적으로, 내 경험은 매우 긍정적이었습니다. LLVM은 주석에서 말하는 것을 수행하며 사용하기가 매우 쉽습니다. 생성 된 코드의 성능은 훌륭합니다. 내가 쓴 프로그램 중 하나는 간단한 작은 BRAINF*CK 컴파일러로, 테스트 한 모든 컴파일러 (GCC 포함)의 가장 빠른 실행 파이브를 생성하는 단순한 작은 BRAINF*CK 컴파일러였습니다.
나는 LLVM과 함께 두 개의 그립 만 있습니다. 첫째, 예외를 제기하는 대신 잘못 될 때마다 Abort ()를 사용합니다. 이것은 LLVM에서 예외의 모든 용도를 제거하기 위해 노력하는 저자의 고의적 인 디자인 결정이지만 LLVM을 사용하는 컴파일러를 디버깅하려고 할 때 OCAML에서 뒷받침을 얻는 것이 불가능합니다. 그러나 소스에서 오류가 어디에서 발생했는지에 대한 단서는 없습니다. 둘째, LLVM의 편집 된 라이브러리는 엄청나게 큰 (20MB)입니다. 나는 이것이 C ++에 의해 발생한 부풀림 때문이라고 생각하지만 편집을 고통스럽게 느리게 만듭니다.
편집 : LLVM에 대한 저의 작업은 고성능 고급 쓰레기 수집 가상 머신을 만들면서 정점에 이르렀습니다. 무료 다운로드 여기 그리고 해당 사항을 확인하십시오 벤치 마크 (와!). @alex : 최대한 빨리 BF 컴파일러를 얻을 것입니다.
도구에 대해 물었고 Eclipse CDT 용 LLVM 플러그인 (Windows, Linux 및 Mac)이 있다고 언급하고 싶습니다. LLVM을 IDE에 잘 통합하고 사용자는 LLVM에 대해 아무것도 알 필요가 없습니다. 빌드 버튼을 누르면 .BC 및 실행 파일을 생성하기에 충분합니다 (사용자에게는 표시되지 않은 배경의 중간 파일).
최신 버전은 공식 Eclipse 업데이트 사이트를 통해 제공됩니다. http://download.eclipse.org/releases/mars
프로그래밍 언어 아래에 있으며 "C/C ++ LLVM-Family Compiler Build Support"라고합니다.