포터블 C 컴파일러

포터블 C 컴파일러(Portable C Compiler, pcc 또는 때로는 pccm - portable C compiler machine으로도 알려져 있음)는 1970년대 중반 벨 연구소의 스티븐 C. 존슨이 작성한 C 프로그래밍 언어용 초기 컴파일러로, 1973년 앨런 스나이더가 제안한 아이디어에 부분적으로 기반을 두었다. 데니스 리치의 승인 하에 "벨 연구소의 C 컴파일러로 배포되었다."

다양한 컴퓨터 아키텍처용 코드를 쉽게 출력하도록 조정할 수 있는 최초의 컴파일러 중 하나였던 pcc는 긴 수명을 가졌다. Seventh Edition Unix에서 처음 등장하여 1994년 4.4BSD가 출시될 때까지 BSD와 함께 제공되었으며, 이후 GNU 컴파일러 모음으로 대체되었다. 당시 매우 영향력이 커서 1980년대 초에는 대부분의 C 컴파일러가 이를 기반으로 했다. 앤더스 마그누손(Anders Magnusson)과 피터 A 존슨(Peter A Jonsson)은 2007년에 pcc 개발을 다시 시작하여 C99 표준을 지원하기 위해 광범위하게 재작성했다.

 기능 
pcc의 주요 특징은 이식성과 향상된 진단 기능이다. 이 컴파일러는 소스 파일 중 일부만이 기계 종속적이도록 설계되었다. 구문 오류에 비교적 강하고 동시대의 컴파일러보다 더 철저한 유효성 검사를 수행한다.

데니스 리치가 작성한 최초의 C 컴파일러는 재귀 하향 파서를 사용했고, PDP-11에 대한 특정 지식을 포함했으며, 생성된 어셈블리 언어 코드를 개선하기 위해 선택적인 기계별 최적화 도구에 의존했다. 대조적으로, 존슨의 pccm은 Yacc로 생성된 파서를 기반으로 했으며 더 일반적인 타겟 머신 모델을 사용했다. 두 컴파일러 모두 타겟별 어셈블리 언어 코드를 생성한 다음 이를 어셈블하여 링크 가능한 오브젝트 모듈을 생성했다.

벨 연구소에서 "QCC" 및 "RCC"로 알려진 후기 버전의 PCC는 다른 타겟 아키텍처 모델을 지원했다.

PCC가 구현하는 언어는 비야네 스트롭스트룹이 "클래식 C"라고 부른 K&R C의 확장 버전으로, `void` 반환 타입(값을 반환하지 않는 함수용), 열거형 및 구조체 할당을 포함한다.

 현재 버전 
스티브 존슨의 원본을 기반으로 한 새로운 버전의 pcc는 앤더스 매그너슨이 관리하고 있다. 이 컴파일러는 BSD 라이선스 하에 제공되며, 그 개발은 BSD 펀드라는 비영리 단체의 자금 지원을 받는다. 매그너슨에 따르면:

이 새로운 버전은 2007년 9월 NetBSD pkgsrc 및 OpenBSD 소스 트리에 추가되었고, 나중에 주 NetBSD 소스 트리에 추가되었다. 한때 BSD 기반 운영체제에서 GNU 컴파일러 모음을 대체할 수 있을 것이라는 추측이 있었지만, FreeBSD 및 NetBSD는 모두 클랭을 잠재적 대체재로 보고 있으며, OpenBSD의 테오 더라트는 pcc가 아직 gcc를 대체할 준비가 되어 있지 않으며 gcc 제거가 최우선 순위는 아니라고 주장한다. 2009년 12월 29일, pcc는 기능적인 X86 OpenBSD 커널 이미지를 빌드할 수 있게 되었다.

pcc 버전 1.0은 2011년 4월 1일에 출시되었다.
이 릴리스부터 컴파일러는 X86 및 X86-64 프로세서 아키텍처를 지원하며 NetBSD, OpenBSD, FreeBSD, 다양한 리눅스 배포판 및 마이크로소프트 윈도우에서 실행된다.
더 많은 아키텍처 지원과 FORTRAN 77 및 C++ 프런트엔드를 포함한 추가 개발은 2022년 현재 진행 중이다.

PCC는 2012년에 OpenBSD 소스 트리에서 제거되었다. 개발이 정체되었고 GNU 컴파일러 모음의 실질적인 대안이 될 수 있도록 개발할 관리자가 나타나지 않았기 때문이다.

pcc의 최신 버전인 1.1.0은 2014년 12월 10일에 출시되었다.

 같이 보기 

 암스테르담 컴파일러 키트
 클랭
 오픈 왓콤

 각주 

 외부 링크 

 TUHS 아카이브
 깃허브 저장소 원본 소스 사본 포함
 또 다른 깃허브 저장소 최신 소스 포함

분류:C 컴파일러
분류:OpenBSD
분류:BSD 라이선스 소프트웨어