휴대용 C 컴파일러

Portable C Compiler
휴대용 C 컴파일러
원저작자스티븐 C.존슨
개발자AT&T 벨 연구소
초기 릴리즈1979년; 43년 전 (1979년)
안정된 릴리스
1.1.0 / 2014년 12월 10일, 7년 전(2014년 12월 10일)
기입처C
운영 체제Unix 및 Unix 유사
유형C 컴파일러
면허증.BSD 라이선스
웹 사이트pcc.ludd.ltu.se Edit this at Wikidata

Portable C 컴파일러(PCC 또는 pccm - Portable C 컴파일러 머신이라고도 함)는 Stephen C가 작성한 C 프로그래밍 언어용 초기 컴파일러입니다. 1970년대 [1]중반 벨 연구소의 존슨은 1973년 [2][3]앨런 스나이더에 의해 제안된 아이디어를 부분적으로 바탕으로 "벨 연구소에 의해 C 컴파일러로 배포...'데니스 리치'[4]의 축복으로요.

컴파일러는 다른 컴퓨터 아키텍처의 출력 코드에 쉽게 적응할 수 있는 최초의 컴파일러 중 하나였기 때문에 수명이 길었습니다.7 Edition Unix에서 첫선을 보였으며 4.4 릴리즈까지 BSD Unix와 함께 출고되었습니다.1994년에 BSD가 GNU C 컴파일러로 대체되었습니다.1980년대 초반에는 대부분의 C 컴파일러가 [5]이를 기반으로 했을 정도로 영향력이 컸습니다.Anders Magnusson과 Peter A Jonson은 2007년에 PCC 개발을 재개하여 C99 [6]표준을 지원하기 위해 PCC를 광범위하게 수정하였습니다.

특징들

PCC의 성공[according to whom?] 비결은 휴대성과 향상된 진단 기능이었다.컴파일러는 일부 소스 파일만 머신에 의존하도록 설계되었습니다.이것은 구문 오류에 비교적 강했고 [according to whom?]동시대 제품보다 더 철저한 유효성 검사를 수행했습니다.

Dennis Ritchie에 의해 쓰여진 최초의 C 컴파일러는 재귀적 하강 파서를 사용하였고, PDP-11에 대한 특정 지식을 통합하였으며, 생성된 어셈블리 언어 코드를 개선하기 위해 선택적인 기계 고유의 최적화 도구에 의존하였다.반면 Johnson의 PCCM은 yacc 생성 파서를 기반으로 하며 보다 일반적인 타깃 머신 모델을 사용했습니다.두 컴파일러는 모두 타겟 고유의 어셈블리 언어 코드를 생성했으며, 그 후 링크 가능한 오브젝트 모듈을 생성하기 위해 어셈블했습니다.

Bell Labs 내에서 "QCC" 및 "RCC"로 알려진 PCC의 최신 버전은 다른 대상 아키텍처 [citation needed]모델을 지원했습니다.

PCC가 구현한 언어는 Bjarne Strostrup이 "클래식 C"라고 불렀던 K&R C의 확장 버전으로, 다음과 같은 기능을 통합했습니다.voidreturn type(값을 반환하지 않는 함수의 경우),[4] 열거 및 구조 할당.

현재 버전

스티브 존슨의 원작을 바탕으로 한 PCC의 새로운 버전은 현재 앤더스 [6]매그너슨이 관리하고 있다.컴파일러는 BSD 라이선스로 제공되며 개발은 BSD Fund라는 비영리 단체에 의해 자금 지원을 받는다.Magnusson에 따르면:

BSD 라이선스를 취득한 것을 제외하고, 라이센스 취득자의 경우, GCC보다 5~10배 고속으로 합리적인 코드를 생성할 수 있습니다.< ... > [ I ]t는, 이식도 꽤 간단합니다.

--

이 새 버전이 NetBSD pkgsrcOpenB에 추가되었습니다.SD [8]소스 트리는 2007년 9월에, 그 후 NetBSD의 메인 소스 [9]트리에 추가.흘러 일부의 추측이 궁극적으로 FreeB지만 BSD기반 운영 systems,[10]에 GNUC컴파일러를 대체할 사용할 수 있다.SD[11][12]과 NetBSD[13]둘 다 클랭 잠재하는 대체품으로와 테오 드 Raadt OpenBSD의 그 pcc 아직은gcc 대체, gcc의 처분이 아니다 최우선 과제 준비가 되지 않고 있다고 보고 있다.[14]2009년 12월 29일 PCC는 x86 OpenBSD 커널 [15]이미지를 구축할 수 있게 되었습니다.

PCC 버전 1.0은 2011년 [16]4월 1일에 출시되었습니다.이 릴리스에서 컴파일러는 x86x64 프로세서 아키텍처를 지원하며 NetBSD, OpenBSD, FreeBSD, 다양한 Linux 디스트리뷰션 및 Microsoft [17]Windows에서 실행됩니다.더 많은 아키텍처와 FORTRAN 77C++ 프런트 엔드에 대한 지원을 포함한 추가 개발은 [when?]계속되고 있습니다.

PCC가 OpenB에서 삭제되었습니다.2012년 [18]SD 소스 트리개발은 중단되었고 GNU 컴파일러 [19][20]컬렉션을 대체할 수 있는 실용적인 제품으로 개발하기 위한 유지보수는 없었다.

PCC의 최신 버전인 1.1.0은 2014년 [21]12월 10일에 출시되었습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Johnson, S.C. (1978). "A portable compiler: theory and practice". Proceedings of the 5th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages. Tucson, Arizona.: 97–104. doi:10.1145/512760.512771. S2CID 14390804.
  2. ^ Snyder, A. (1975). "A Portable Compiler for the Language C". Master's Thesis. MIT, Cambridge, Mass. Archived from the original on 2006-09-05. Retrieved 2006-07-19.
  3. ^ Johnson, S.C. (1981). A Tour Through the Portable C Compiler. Unix Programmer's Manual, 7th edition, Volume 2. ISBN 0-03-061743-X.
  4. ^ a b Stroustrup, Bjarne (2002). Sibling rivalry: C and C++ (PDF) (Report). AT&T Labs.
  5. ^ Ritchie, Dennis M. (1993). "The development of the C language". The second ACM SIGPLAN conference on History of programming languages. Cambridge, Massachusetts. pp. 201–208. Retrieved 2008-12-30. At the start of the decade, nearly every compiler was based on Johnson's pcc; by 1985 there were many independently-produced compiler products.
  6. ^ a b "pcc history". pcc - portable c compiler. 2010-06-21. Retrieved 2012-06-26.
  7. ^ Erdely, Mike (2007-09-15). "BSD Licensed PCC Compiler Imported". OpenBSD Journal. Retrieved 2011-12-17.
  8. ^ Moerbeek, Otto (2007-09-15). "CVS: cvs.openbsd.org: src". openbsd-cvs (Mailing list).
  9. ^ Brownlee, David (2007-09-20). "CVS commit: src/dist/pcc". source-changes (Mailing list).
  10. ^ "GCC Compiler Finally Supplanted by PCC?". /. 2007-09-17.
  11. ^ Larabel, Michael (12 May 2012). "FreeBSD 10 To Use Clang Compiler, Deprecate GCC". Phoronix. Archived from the original on 10 April 2015. Retrieved 23 April 2015.
  12. ^ Brooks, Davis (5 November 2012). "HEADS UP: Clang now the default on x86" (Mailing list). Retrieved 23 April 2015.
  13. ^ Joerg, Sonnenberger (17 October 2013). "Importing LLVM/Clang" (Mailing list). Retrieved 23 April 2015.
  14. ^ Matzan, Jem (2007-10-15). "More on OpenBSD's new compiler". The Jem Report. Archived from the original on 2012-01-04. Retrieved 2011-12-17. But that’s never really been the agenda, see. Some people think we hate GNU code. But the thing is we hate large code, and buggy code that upstream does not maintain. That’s the real problem… gcc gets about 5-6% slower every release, has new bugs, generates crappy code, and drives us nuts. This is just an attempt to see if something better can show up.
  15. ^ de Weerd, Paul (2009-12-29). "Call for testing: pcc and the OpenBSD kernel". OpenBSD Journal. Retrieved 2011-12-17.
  16. ^ Magnusson, Anders (2011-04-01). "1.0 Release". Portable C Compiler. Retrieved 2011-12-17.
  17. ^ "BSD Fund: pcc fund". bsdfund.org. 2011-04-01. Archived from the original on 2009-01-05. Retrieved 2012-06-26.
  18. ^ Paul Irofti (2012-04-12). "CVS: cvs.openbsd.org: src".
  19. ^ Peter Hessler (2012-06-18). "Re: Story behind PCC's removal?".
  20. ^ Miod Vallat (2013-07-31). "Compilers in OpenBSD".
  21. ^ Magnusson, Anders (2014-12-10). "1.1.0 Release". Portable C Compiler. Retrieved 2022-04-22.

외부 링크