gcc C 컴파일러는 C 자체로 작성 되었습니까? 아니면 Assembly로 작성 되었습니까? 컴파일러가 C로 작성된 경우 컴파일러 코드를 컴파일하는 데 사용되는 컴파일러는 무엇입니까?
gcc C 컴파일러는 C 자체로 작성 되었습니까? 아니면 Assembly로 작성 되었습니까? 컴파일러가 C로 작성된 경우 컴파일러 코드를 컴파일하는 데 사용되는 컴파일러는 무엇입니까?
답변:
gcc에 대한 구체적인 역사는 GCC Wiki에 있습니다. 보다 일반적인 요점은 컴파일러가 자체적으로 컴파일 할 수있을만큼 강력 할 때까지 일반적으로 다른 컴파일러로 컴파일된다는 것입니다. 또는 어셈블러에서 기능의 하위 집합을 처리하고 거기에서 빌드 할 수있는 기본 컴파일러를 작성할 수 있습니다. 그러나 다시 말하지만 이것은 더 이상 필요하지 않습니다. 다양한 언어로 사용 가능한 많은 컴파일러가 있습니다. Stephen Johnson이 pcc (최초의 C 컴파일러 중 하나)를 작성할 때도 B 용 컴파일러와 다른 많은 언어를 사용할 수있었습니다. gcc에는 원래 빌드하기 위해 선택할 컴파일러가 여러 개 있었으며 RMS는 적어도 초기 개발 중에 Pastel 컴파일러를 사용했다고 말합니다.
C 컴파일러를 C로 작성해야 할 필요는 없습니다. 원하는 경우 Perl로 작성할 수 있습니다. 주어진 플랫폼에 대한 컴파일러가 원래 해당 플랫폼에서 작성 될 필요는 없습니다 (임베디드 시스템은 거의 항상 다른 시스템에서 컴파일 됨). 따라서 스스로를 부트 스트랩하는 방법에는 여러 가지가 있습니다.
이 질문에는 컴파일러 부트 스트랩의 첫 번째 인스턴스와 관련된 몇 가지 흥미로운 미묘함이 있습니다. 당신이 매우 영리하다면 그 부트 스트랩을 사용하여 놀랍고 훌륭하며 무서운 일을 할 수 있습니다 .
원래는 일부 어셈블리 언어로 작성되었고 개밥 자체가 시작되었습니다.
이것은 분명히 매우 대략적인 지표 일 뿐이지 만 디렉토리 에있는 이 빠른 목록 이 gcc-5.1.0-src/gcc/
흥미 롭다 는 것을 알았습니다 . 이 디렉토리에는 GCC 자체의 주요 소스가 포함되어 있습니다 (런타임 라이브러리 제외).
다음은 C 및 C ++ 파일이 지배하는 확장자 별로 그룹화 된 상위 파일 수 (100 개 이상) 입니다.
112 .opt
118 .def
140 .cc
185 .x
250 .exp
353 .md
366 .mm
414 .f
430 .f03
521 .m
625 .a
1082 .go
1371 .h
1602 .ads
1655 .adb
1828 .ada
3860 .f90
11231 .C // C++
23811 .c // C
요즘 GCC
은 GNU C 컴파일러뿐만 아니라 GNU 컴파일러 컬렉션을 참조합니다.
6.3 gcc 하위 디렉토리
gcc 디렉토리에는 GCC의 C 소스의 일부인 많은 파일, 구성 및 빌드 프로세스의 일부로 사용되는 기타 파일, 설명서 및 테스트 모음을 포함한 하위 디렉토리가 포함되어 있습니다.
참조 : https://gcc.gnu.org/onlinedocs/gccint/gcc-Directory.html