컴파일러란?
컴파일러는 C와 같은 고급 프로그래밍 언어를 어셈블리 언어 또는 기계어 코드로 변환하는 데 사용되는 컴퓨터 프로그램입니다. 컴파일러의 주요 목적은 사람이 읽을 수 있는 코드를 특정 하드웨어 플랫폼에서 실행할 수 있는 형식으로 변환하는 것입니다. 이 과정에는 소스 코드를 분석하고 오류를 확인하며 최적화된 머신 코드를 생성하는 작업이 포함됩니다.
컴파일러 정확성은 컴파일러가 언어 사양에 따라 작동하도록 보장하는 소프트웨어 엔지니어링에서 매우 중요한 요소입니다. 컴파일러 정확성을 달성하는 데 사용되는 기술에는 컴파일러 개발 시 공식적인 방법을 사용하고 기존 컴파일러에 대해 컴파일러 유효성 검사라고 하는 엄격한 테스트가 포함됩니다.
대상 플랫폼과 언어에 따라 다양한 유형의 컴파일러가 존재합니다. 네이티브 또는 호스팅 컴파일러는 컴파일러 자체와 동일한 컴퓨터 및 운영 체제에서 직접 실행할 수 있는 출력을 생성합니다. 반면 크로스 컴파일러는 다른 플랫폼에서 실행하기 위한 코드를 생성합니다. 가상 머신용 컴파일러는 기본 하드웨어에서 직접 실행하는 것이 아니라 가상 머신에서 실행하기 위한 코드를 생성합니다.
다른 유형의 컴파일러로는 코드를 변환하고 병렬 코드 주석 또는 언어 구조체로 주석을 다는 소스-소스 컴파일러가 있습니다. 바이트코드 컴파일러는 소스 코드를 이론적 머신의 어셈블리 언어로 컴파일하는 반면, JIT(Just-in-Time) 컴파일러는 성능을 향상시키기 위해 런타임까지 컴파일을 연기합니다. 합성 도구라고도 하는 하드웨어 컴파일러는 하드웨어 설명 언어를 입력으로 받아 하드웨어 구성에 대한 설명을 생성합니다.