0

새로운 아키텍처 용 컴파일러를 만들고 싶습니다. 그것이 얼마나 큰 일인지 나는 잘 모른다. 지금까지 Flex/Bison 종류의 도구는 여러 단계의 컴파일 작업을 수행 할 수 있다는 것을 알고 있습니다.컴파일러 전달을 가로 챌 수있는 방법

내 목표는 컴파일러의 코드 생성 단계에서 가로 채기입니다. 그래서, 저의 일에 사용할 수있는 무료 도구가 있습니까? 대부분의 컴파일러는 모든 다른 컴파일 과정에 포함되어 있습니다.

나는 LLVM에 대해 잘 모르겠지만, 나는 모든 다른 단계가를 분리 기본 작은 간단한 컴파일러가 필요합니다. 아마 AST 부분에서 코드 생성 부분으로 조작 할 것입니다.

사용할 수있는 도구가 있다면 의견을 보내주십시오.

+0

어떤 언어로 제공됩니까? –

+0

의견을 진술 할 때 "코드를 병렬화"하고 싶다면 접근 방법이 잘못되었을 수 있습니다. "코드 생성을 가로 채기"할 수있는 컴파일러를 찾더라도 컴파일러의 나머지 부분은 여전히 ​​실행 모델과 사용자의 용도에 맞지 않는 의미를 가정합니다. – Ingo

+0

컴파일 모델이 "flex/bison의 여러 단계 수행"인 경우 컴파일러의 작동 방식에 대한 이해가 약할 수 있으므로 코드 생성의보다 복잡한 작업에서는 성공하지 못할 수 있습니다. 어쨌든이 기회를 줄 가능성이있는 컴파일러 클래스를 가져 가시는 것이 좋습니다. 그렇게 할 수 없다면, 컴파일러에서 표지까지 읽은 다음 질문을 재고하십시오. –

답변

0

새로운 컴퓨터를위한 C++ 컴파일러를 만들기 위해 flex/bison을 시작하는 것은 가능하지만 많은 작업이 필요합니다. flex 또는 bison이 적용되지 않는 컴파일러에는 많은 의미 분석 코드가 있습니다.

또 다른 선택은 gcc를 새 컴퓨터로 재 타겟팅하는 것입니다. 그러나 gcc는 매우 다양하며이를 변경하는 방법을 배우기 위해서는 많은 연구가 필요합니다. gcc의 장점은 재 타겟팅이 완료된 후에 c/C++/java 지원을 받는다는 것입니다.

@ChrisTodd lcc의 제안은 lcc 컴파일러를 새 시스템으로 재 지정하는 방법을 설명하는 책이 있기 때문에 좋습니다. lcc를 retarget 한 후에는 C 프로그램 만 컴파일 할 수 있습니다.

1

관심있는 언어는 지정하지 않지만 간단한 C 컴파일러를 사용하려면 tcc 또는 lcc을 참조하십시오.

+0

이 바람직합니다. c/C++/Java. 사실 내 새로운 아키텍처에 따라 코드를 병렬 처리하려고합니다. 나는 프로그램 분석 플랫폼 인 SUIF2 (NCI-Stanford)를 컴파일하려고했으나 아직 우분투에서 컴파일 할 수는 없었다. 나는 TCC에 대해 들었다. –