gcc용 코드 생성기 백엔드를 어떻게 작성합니까?
저는 저만의 (매우 간단한) 바이트 코드 언어와 이를 실행할 가상 머신을 만들었습니다.잘 작동하지만 이제 gcc(또는 자유롭게 사용할 수 있는 다른 컴파일러)를 사용하여 일반 c 프로그램에서 이 기계에 대한 바이트 코드를 생성하고 싶습니다.그래서 문제는 어떻게 gcc를 수정하거나 확장하여 그것이 나만의 바이트 코드를 출력할 수 있는가 하는 것입니다.참고로 저는 제 바이트 코드를 기계 코드로 컴파일하고 싶지 않습니다. 저는 c-코드를 (나만의) 바이트 코드로 "컴파일"하고 싶습니다.
저는 이것이 잠재적으로 큰 질문이라는 것을 알고 있으며, 가장 좋은 대답은 "gcc 소스 코드를 보러 가라"는 것일 수 있습니다.이 일을 시작하는 방법에 대한 도움이 필요합니다.gcc에 사용자 지정 생성기를 추가하는 과정을 설명할 수 있는 이 주제에 대한 기사나 책이 있을 것이라고 생각하지만, 구글 검색을 통해 아무것도 찾지 못했습니다.
나는 우리가 이전에 설계한 8비트 프로세서로 gcc를 포팅하느라 바쁩니다.우리 기계는 8비트이고 어큐뮬레이터가 하나밖에 없기 때문에 저는 좀 어려운 작업이지만, 당신이 더 많은 리소스를 가지고 있다면 쉬워질 수 있습니다.다음은 gcc 4.9로 관리하고 cygwin을 사용하는 방법입니다.
- gcc 4.9 소스 다운로드
- 아키텍처 이름 추가
config.sub
250라인 주변에서 찾기# Decode aliases for certain CPU-COMPANY combinations.
해당 목록에 추가| my_processor \
- 동일한 파일에서 다음을 찾습니다.
# Recognize the basic CPU types with company name.
목록에 자신을 추가합니다.| my_processor-* \
파일 검색
gcc/config.gcc
${target} 파일에서 줄 880 주위에 있는 경우를 찾습니다. 다음 방법으로 자신을 추가하십시오.;; my_processor*-*-*) c_target_objs="my_processor-c.o" cxx_target_objs="my_processor-c.o" target_has_targetm_common=no tmake_file="${tmake_file} my_processor/t-my_processor" ;;
- 폴더 만들기
gcc-4.9.0\gcc\config\my_processor
- 기존 프로젝트에서 파일을 복사하여 편집하거나 처음부터 직접 파일을 만들 수 있습니다.우리의 프로젝트에서 우리는 msp430 프로젝트의 모든 파일을 복사하고 편집했습니다.
- 다음 파일이 있어야 합니다(일부 파일이 필수는 아님).
my_processor.c
my_processor.h
my_processor.md
my_processor.opt
my_processor-c.c
my_processor.def
my_processor-protos.h
constraints.md
predicates.md
README.txt
t-my_processor
- 길을 내다
gcc-4.9.0/build/object
- 달려.
../../configure --target=my_processor --prefix=path for my compiler --enable-languages="c"
- 만들다
- 설치를 시키다
- 많은 조사와 디버깅을 합니다.
- 즐겁게 보내세요.
그것은 힘든 일입니다.
예를 들어, 나는 또한 나만의 바이트 코드로 나만의 "아키텍처"를 설계하고 그것을 위해 GCC로 C/C++ 코드를 생성하기를 원했습니다.이것이 제가 만드는 방법입니다.
- 처음에 당신은 GCC의 매뉴얼에서 이식에 대한 모든 것을 읽어야 합니다.
- 또한 GCC Internals를 꼭 읽어보시기 바랍니다.
- 컴파일러에 대한 많은 내용을 읽어 보십시오.
- 또한 이 질문과 여기에 있는 답을 참조하십시오.
- 자세한 내용은 Google에서 확인하십시오.
- 여러분이 정말로 준비가 되었는지 스스로에게 물어보세요.
- 아주 좋은 카페 기계를 가지고 있어야 합니다...당신은 그것이 필요할 것입니다.
- 컴퓨터 종속 파일을 gcc에 추가하기 시작합니다.
- 호스트 간 대상 방식으로 gcc를 컴파일합니다.
- Hex-Editor에서 코드 결과를 확인합니다.
- 더 많은 테스트를 수행합니다.
- 이제 자신만의 아키텍처로 즐기십시오.d
완료되면 OS 의존 라이브러리 없이 corc++만 사용할 수 있습니다(현재 아키텍처에서 실행 중인 OS가 없습니다). 이제 크로스 컴파일러로 다른 많은 라이브러리를 컴파일하여 좋은 프레임워크를 만들어야 합니다.
PS: LLVM(Clang)이 이식하기 더 쉽습니다...아마도 당신은 거기서 시작하고 싶나요?
그렇게 어렵지는 않습니다.시스템과 유사하다면 RTL(?)을 수정합니다.make compile test
부트스트랩 단계를 거치고, 작동할 때까지 헹구고 반복합니다.당신은 아마도 실제 코드를 작성할 필요가 없고 기계 정의 템플릿만 작성할 수 있습니다.
언급URL : https://stackoverflow.com/questions/10617215/how-to-write-your-own-code-generator-backend-for-gcc
'source' 카테고리의 다른 글
Firestore - 문서에서 특정 필드 가져오기 (0) | 2023.06.09 |
---|---|
안드로이드의 시스템 버전을 확인하려면 어떻게 해야 합니까? (0) | 2023.06.09 |
문자열에서 "를 검색하는 방법 - EXCEL (0) | 2023.06.09 |
MariaDB 테이블에 current_timestamp()를 삽입하는 데 문제가 발생했습니다. (0) | 2023.06.09 |
루비 보석 의존성에서 타일드-greater-than(~>)은 무엇을 의미합니까? (0) | 2023.06.09 |