2012-01-08 3 views
14

프로그래밍 LLVM 백엔드를 배우고 있습니다.LLVM 백엔드 프로그래밍 학습을위한 코드 예제

현재 분석 패스, 이후 프로그램 변환에 관심이 있습니다. (필자는 분석에 더 익숙해지면 프로그램 변환을위한 시간이 될 것이라고 생각합니다.)

학습 자료를 추천 해 주시겠습니까? (나는 LLVM Programmers 매뉴얼과 Dragon Book을 알고있다.)).

리소스별로 튜토리얼, 서적뿐만 아니라 특히 작고 잘 작성된 프로젝트을 의미합니다. 코드 예제을 읽고 컴파일하여 실제 구현에 대해 자세히 알아 보려면 (해킹 좀 해보고 싶습니다.)

이러한 코드는 분석 부분에만 국한되지 않아야합니다. 화제는 일반적으로 LLVM 백엔드 프로그래밍이지만 분석과 프로그램 변환은 가장 흥미 롭습니다.

+1

약간 접함 : [Try Out LLVM] (http://llvm.org/demo/index.cgi) 페이지를 사용하여 IR을 생성했을만한 LLVM C++ API 소스를 생성하도록 요청할 수 있습니다. 특정 번역을 찾을 때 도움이 될 수도 있고하지 않을 수도 있습니다. –

답변

2

모든 LLVM 변환은 lib/Transforms 디렉토리 안에 자체 포함 된 패스로 구성되어 있습니다. opt 도구를 사용하여 소스를 읽고 코드에서 임의의 패스를 실행할 수 있습니다.

또한 자신의 패스를 작성하고 전체 LLVM을 다시 컴파일하지 않고로드 가능한 모듈로 사용하는 방법에 대한 유용한 자습서가 있습니다.

그래서 벌써 넓은 놀이터가 있습니다.

+2

** 나는 설명서 자체와 llvm 소스 이상의 것을 요구했다. 특히 작은 (심지어 LLVM 해킹의 장난감 사례) **에 대해 썼습니다. 나는 다음을 포함하는 [LLVM 매뉴얼] (http://llvm.org/docs/)에 대한 지식을 강조했다. [LLVM doxygen은 "프로그래밍"부분에서 언급했다.] (http://llvm.org/doxygen/) [LLVM CMake 가이드] (http://llvm.org/docs/CMake.html#passdev)의 소스 3에서 프로그래밍 ... 많은 문서가 있으며 프로젝트에 대한 전체적인 시각을 얻을 수 있습니다. 그럼에도 불구하고, 많은면에서 문서가 짜증나, 그래서 더 많은 질문이 있습니다. –

+1

"전체 LLVM을 다시 컴파일하지 않고"* 문서화에 대해 언급하면서 소스 트리에서 패스를 만드는 방법에 대해 알려주고 싶습니다. [CMake로 LLVM 빌드 : 소스에서 LLVM 개발하기] (http : //llvm.org/docs/CMake.html#passdev) –

+1

오케이, 오케이, 관련없는 답변에 대해 죄송합니다. 나무에서 빠져 나오기 위해,이 기능은 실제로 저, LOL에 의해 개발되었습니다. – arrowd

1

3 년 전에하고 싶은 일을 한 사람 : LLVM 코드베이스가 가장 좋은 예입니다. 아마도 컴파일러 책에 잘 설명되어 있기 때문에 지배자 분석이 시작하는 것이 좋습니다. 이 LLVM에서 수행하는 방법

확인 : 명령 스케줄링 될 수 보는 http://llvm.org/doxygen/Dominators_8h_source.html

다른 장소.

나는 LLVM 라이브러리를 사용하고, 구글 긴 세션 후 난 그냥 "LLVM 프로젝트"에서 LLVM 웹 사이트에서 발견 비슷한 코드를 찾고 있었다