본문 바로가기
카테고리 없음

컴파일러 언어란 무엇인가?

by 만능해결사 2023. 3. 8.

compiler

컴파일러 언어는 무엇인가요?

컴파일러 언어는 해석되지 않고 컴파일되도록 설계된 프로그래밍 언어입니다. 인기 있는 컴파일러 언어의 예로는 C, C++, Java, Go 등이 있습니다.

컴파일러 언어로 코드를 작성하려면 일반적으로 텍스트 편집기나 IDE(통합 개발 환경)를 사용하여 프로그램의 소스 코드를 작성합니다. 그런 다음 소스 코드는 C 코드의 경우 ".c" 또는 Java 코드의 경우 ".java"와 같은 특정 파일 확장자를 가진 파일에 저장됩니다.

소스 코드를 작성한 후에는 컴파일러 프로그램을 사용하여 컴퓨터의 프로세서에서 실행할 수 있는 기계 코드로 변환합니다. 컴파일러 프로그램은 소스 코드 파일을 입력으로 사용하고 컴퓨터 코드를 포함하는 하나 이상의 출력 파일을 생성합니다.

컴파일러 언어의 작동 원리는 다음과 같은 여러 단계를 포함합니다.

컴파일 프로세스의 첫 번째 단계는 소스 코드를 키워드, 식별자, 연산자 및 리터럴과 같은 어휘 토큰 시퀀스로 나누는 것을 포함합니다.

다음 단계는 프로그래밍 언어의 문법 규칙을 기반으로 어휘 토큰을 구문 트리로 구문 분석하는 것을 포함합니다. 구문 트리는 문, 식을 포함하여 프로그램의 구조를 나타냅니다.

구문 트리가 생성되면 컴파일러는 의미 분석을 수행하여 프로그램 의미의 정확성을 확인합니다. 여기에는 유형 오류, 변수 사용, 범위 지정 규칙 및 기타 언어별 규칙을 확인하는 작업이 포함됩니다.

컴파일 프로세스의 마지막 단계는 컴퓨터의 프로세서에 의해 실행될 수 있는 기계 코드를 생성하는 것을 포함합니다. 코드 생성 단계에서는 구문 트리를 어셈블리 코드와 같은 낮은 수준의 기계 명령으로 변환하여 컴퓨터에서 직접 실행할 수 있습니다.

컴파일 과정 동안 컴파일러는 생성된 코드의 효율성을 향상시키기 위해 데드 코드 제거, 루프 언롤링, 레지스터 할당과 같은 다양한 최적화 기술을 수행할 수 있습니다.

기계 코드가 생성되면 추가 번역 없이 여러 번 실행할 수 있으므로 컴파일된 언어가 해석된 언어보다 더 빠릅니다.

 

컴파일러의 역할

컴파일러를 사용하여 고급 언어(예: C, C++, Java 또는 Python)로 작성된 프로그램을 컴퓨터의 프로세서에서 직접 실행할 수 있는 기계 코드로 변환할 수 있습니다.

컴파일러를 사용하는 주된 이점은 결과적인 기계 코드가 런타임에 코드를 한 줄씩 번역하는 인터프리터에 의해 실행되는 코드보다 일반적으로 더 빠르고 효율적이라는 것입니다.

다음은 컴파일러를 사용하도록 선택할 수 있는 몇 가지 시나리오입니다.

사용자에게 추가 소프트웨어를 설치할 필요 없이 배포할 수 있는 독립 실행형 실행 프로그램을 생성해야 하는 경우입니다. 예를 들어 사용자의 시스템에서 직접 실행되는 데스크톱 응용 프로그램 또는 명령줄 유틸리티를 생성하려는 경우입니다.

프로그램의 성능을 최적화해야 할 때입니다. 컴파일된 코드는 컴퓨터의 프로세서에 의해 직접 실행되기 때문에 특히 계산 집약적인 작업의 경우 해석된 코드보다 더 빠르고 효율적일 수 있습니다.

당신의 프로그램을 C나 어셈블리 언어와 같은 낮은 수준의 언어로 작성된 다른 소프트웨어와 통합해야 할 때입니다. 코드를 기계 코드로 컴파일하면 프로그램에서 직접 낮은 수준의 함수와 라이브러리를 더 쉽게 호출할 수 있습니다.

임베디드 시스템 또는 기타 특수 하드웨어에서 실행되는 소프트웨어를 생성해야 하는 경우입니다. 코드를 컴퓨터 코드로 컴파일하면 이러한 장치에서 리소스 사용을 최소화하면서 효율적으로 실행될 수 있습니다.

그러나 컴파일러를 사용하면 몇 가지 단점도 있습니다. 주요 단점 중 하나는 특히 대형 프로그램의 경우 컴파일이 시간이 많이 걸리는 프로세스가 될 수 있다는 것입니다. 또한 컴파일된 코드는 컴파일된 컴퓨터 아키텍처 및 운영 체제에 따라 다르므로 일반적으로 해석된 코드보다 이식성이 떨어집니다.

program coding

컴파일러 언어의 로더 역할

로더는 코드 생성 단계 이후에 사용되는 컴파일러 언어의 구성 요소입니다. 로더의 주요 기능은 컴파일러가 생성한 기계 코드를 메모리에 로드하여 운영 체제에서 실행할 수 있도록 준비하는 것입니다.

로더는 다음과 같은 여러 작업을 수행합니다.

로더는 실행 프로그램과 프로그램이 종속된 라이브러리 또는 공유 리소스를 저장하기 위해 메모리를 할당합니다.

로더는 컴파일러가 생성한 컴퓨터 코드를 수정하여 코드가 메모리에 로드될 올바른 메모리 주소를 반영합니다. 이 프로세스를 재배치라고 하며 프로그램이 메모리의 위치에 관계없이 올바르게 실행될 수 있도록 합니다.

로더는 외부 라이브러리 또는 공유 리소스에 대한 함수 호출과 같은 프로그램에서 확인되지 않은 기호를 확인합니다.

로더는 변수 초기화, 스택 및 힙 설정, 기타 필요한 리소스 구성 등 프로그램 환경을 설정합니다.

로더가 작업을 완료하면 프로그램의 시작 지점으로 제어 권한이 전송되고 프로그램이 실행되기 시작합니다.

로더는 생성된 코드를 컴퓨터의 운영 체제에서 실행할 수 있도록 하기 때문에 컴파일 프로세스의 필수 구성 요소입니다. 로더가 없으면 컴파일러가 생성한 기계 코드는 쓸모가 없고 컴퓨터에서 실행할 수 없습니다.

댓글