LLVM의 가장 큰 이점은 무엇입니까?
LLVM, llvm-gcc 또는 클랑에 대한 경험이 있는 사람이 있습니까?
llvm에 대한 전체 아이디어는 매우 흥미로운 것으로 보이며 이 아이디어가 어떻게 작동하는지 보는 것에 관심이 있습니다.만약 공구가 생산 준비가 되어 있지 않다면, 저는 공구를 시험해 보는 데 많은 시간을 낭비하고 싶지 않습니다.
만약 당신이 그 도구들에 대한 경험이 있다면, 당신은 그것들에 대해 어떻게 생각합니까?어떤 주요 제한 사항에 직면했습니까?가장 큰 이점은 무엇입니까?
감사합니다!
LLVM에 대해 좋은 말을 많이 할 수 없습니다.제가 본 다른 컴파일러 프로젝트에 비해 작업하기가 매우 쉽습니다.저는 컴파일러 사람은 아니지만, LLVM의 제한이나 클랭에 좌절할 때는 대개 뛰어들어 변경하는 것이 매우 쉽습니다.
우리(Nate Begeman, 저 및 기타 몇 명)는 컴파일러 설계에 대한 실제 경험이 없는 PPC 백엔드를 작성했지만, 전문가가 아닌 사람도 접근할 수 있을 정도로 단순해 보였습니다.우리는 PPC 어셈블리에 익숙했지만, 몇 주의 여가 시간에 LLVM-gcc가 PPC 코드를 출력할 수 있었다는 것은 여전히 놀라운 일이었습니다.확실히 제가 편집한 헬로 월드 중 가장 만족스러운 것 중 하나입니다.
저는 LLVM을 여러 달 동안 켜고 끌면서 놀고 있습니다.OCaml Journal에서 OCaml 프로그래밍 언어의 LLVM 사용을 다룬 두 개의 기사를 작성했습니다.OCaml 언어는 쓰기 컴파일러에 이상적이고 구문 분석 등을 위한 강력하고 성숙한 도구와 라이브러리가 풍부하기 때문에 특히 흥미롭습니다.
전반적으로 제 경험은 매우 긍정적이었습니다.LLVM은 주석에 나와 있는 대로 작동하며 사용하기 매우 쉽습니다.생성된 코드의 성능이 우수합니다.제가 작성한 프로그램 중 하나는 제가 테스트한 컴파일러(GCC 포함) 중 가장 빠른 실행 파일을 생성하는 간단한 Brainf*ck 컴파일러였습니다.
LLVM에 대한 불만은 두 가지뿐입니다.첫째, 예외를 제기하는 대신 오류가 발생할 때마다 abort()를 사용합니다.이는 LLVM에서 모든 예외 사용을 제거하기 위해 노력하는 작성자들의 의도적인 설계 결정이었지만 LLVM을 사용하는 컴파일러를 디버깅하려고 할 때 OCaml에서 역추적을 가져오는 것이 불가능합니다. 프로그램은 LLVM의 텍스트 설명과 함께 사라지지만 소스에서 오류가 발생한 위치에 대한 단서는 없습니다.둘째, LLVM의 컴파일된 라이브러리는 엄청나게 큽니다(20Mb).저는 이것이 C++에 의해 발생한 팽창 때문이라고 생각하지만 컴파일을 고통스러울 정도로 느리게 만듭니다.
편집: LLVM에 대한 제 작업은 고성능의 높은 수준의 가비지 수집 가상 머신을 만드는 것으로 끝을 맺었습니다.여기에서 무료로 다운로드하고 해당 벤치마크를 확인하십시오(와!).@알렉스: 가능한 한 빨리 BF 컴파일러를 어딘가로 가져다 드리겠습니다.
저는 LLVM을 처음 사용한 적이 있는데, 이 튜토리얼을 통해 LLVM의 잠재력에 대해 매우 흥분했습니다. JIT를 사용하여 비교적 쉽게 앱으로 구축할 수 있다는 생각이 저를 놀라게 했습니다.
저는 그것의 한계, 안정성, 성능 등에 대해 어떤 종류의 유용한 의견도 제시할 수 있을 만큼 깊이 들어가지 못했습니다.나는 그것이 모든 면에서 좋다는 것을 이해하지만 그것은 순전히 소문입니다.
툴에 대해 문의하셨는데 Eclipse CDT(Windows, Linux 및 Mac용)용 LLVM 플러그인이 있다는 점을 언급하고 싶습니다.LLVM을 IDE에 잘 통합하므로 사용자는 LLVM에 대해 아무것도 알 필요가 없습니다.빌드 버튼을 누르면 .bc 및 실행 파일(및 사용자가 볼 수 없는 배경의 중간 파일)을 생성할 수 있습니다.
최신 버전은 공식 이클립스 업데이트 사이트 http://download.eclipse.org/releases/mars 를 통해 이용할 수 있습니다.
프로그래밍 언어 아래에 있으며 이름은 "C/C++ LLVM-패밀리 컴파일러 빌드 지원"입니다.
언급URL : https://stackoverflow.com/questions/172863/what-are-the-greatest-benefits-of-llvm
'programing' 카테고리의 다른 글
에뮬레이터의 "이 앱은 Firebase 인증을 사용할 수 있는 권한이 없습니다." (0) | 2023.06.09 |
---|---|
어떤 루비 IDE를 선호하십니까? (0) | 2023.06.09 |
Python에서 가능한 가장 간단한 비동기/대기 예제 (0) | 2023.06.04 |
루비: 루비 보석의 특정 버전을 어떻게 설치합니까? (0) | 2023.06.04 |
맥 OS에 노코기리를 설치하면 실패하고 libiconv가 누락되는 이유는 무엇입니까? (0) | 2023.06.04 |