2010-06-23 3 views
2

대상 플랫폼에 대한 원시 코드 생성 방법은 무엇입니까? C++에서 (일부) 경험과 (일부) 기술을 보유하고 있으며 C++ 용으로 자체 컴파일러 작성 및 작성에 관심이 있습니다. 그러나 최종 목표를 네이티브 코드로 변환하여 현재 타겟 플랫폼 인 Windows에서 실행하는 방법에 대해서는 거의 알지 못합니다.(특정 플랫폼 용) 원시 코드 방출

나는 LLVM을 살펴 봤지만, shiz에 대한 그들의 문서를 이해할 수 없었다.

편집 : 또한 LLVM은 VS2010에서 빌드되지 않습니다. 나는 끝내서 파일 이름 끝에 재미있게 추가 한 모든 장소를 정리하고 typedef를 수정했다. 이제는 컴파일 할 필요가 전혀없는 이상한 .def 파일이 생겼다. , 나는 그들이 어디에서 부르는지 1 조개의 머리말에서 어디에 있는지 모른다.

기타 편집 : 내 자신의 AST/파서/렉서를 이미 구축/구축하고 있습니다. 결과를 원래 언어로 변환하는 방법을 알아야합니다.

+4

C++은 매우 복잡한 언어이며 훨씬 더 복잡한 컴파일입니다. 더 간단하게 시작하는 것은 어떨까요? –

+1

처음에는 C 또는 어셈블러를 내보내는 컴파일러 프런트 엔드를 구현 한 다음 C 컴파일러 또는 어셈블러 (예 : gcc)를 백 엔드로 사용합니다. 원하는 경우 나중에 언제든지 자신 만의 백 엔드를 작성할 수 있습니다. –

+3

실제로, llvm은 훌륭한 튜토리얼 (http://llvm.org/docs/tutorial/)을 가지고 있습니다. 당신이 그것을 이해할 수 없다면, 나는 당신의 노력의 성공을 진지하게 의심합니다. –

답변

3

learning-to-write-a-compiler과 같은 컴파일러 작성에 관한 다른 질문을보고 드래곤 북 또는 Programming Language Pragmatics과 같은 작업을 수행하면 백엔드로 사용하기에 충분한 LLVM 또는 gnu 번개를 충분히 이해할 수 있습니다.

연습에 헌신하는 데 수년이 걸리지 않으면 C++ 컴파일러를 작성하지 마십시오. 다른 한편으로는 기존 백엔드 및 표현 템플릿을 기반으로 무언가를 생성하는 데는 몇 달 밖에 걸리지 않습니다.