2014-07-09 13 views
3

파서가 생성 한 AST이 프런트 엔드에서 IR을 생성하는 데 사용된다는 것을 알고 있습니다.LLVM - AST를 IR로 변환하는 방법

나는

AST는 AST에서 IR로 변환하는 단계 무엇인지 나무입니다, IR (확률값 어셈블리 또는 비트 코드)로 변환 한 후 구문 분석하는 방법 AST 궁금.

답변

4

LLVM IR from Clang ASTs은 Clang의 code gen 단계에서 발생합니다. 이 단계의 코드는 lib/CodeGen/ (Clang의 소스 루트와 관련 있음)에 있습니다. Clang은 메모리 내 데이터 구조에 AST가 있기 때문에 AST를 구문 분석 할 필요가 없습니다. 코드 생성은 본질적으로 IR을 Module으로 내보내는 AST의 재귀 적 워크 워크입니다. 관심있는 특정 단계가있는 경우이를 조사하는 가장 좋은 방법은 코드를 살펴 보는 것입니다.

+0

감사합니다. Eli. IR을 모듈로 내보내는 AST를 걷는 동안 일어난 일에 대해 좀 더 설명해 주시겠습니까? – Sam

+0

AST를 IR로 변환하는 방법은 무엇입니까? 그것은 매핑 파일인가? – Sam

+1

@Sam 프로세스를 자세하게 설명하면 시간과 공간이 많이 필요합니다. 직접 소스를 확인하는 것이 좋습니다. –