프로그래밍/Compiler

[컴파일러] 1-1. 언어처리기

Beginner:) 2024. 2. 9.
320x100

해당 카테고리는 컴파일러:원리, 기법, 도구에 대한 책을 기반으로 정리하면서 쓰여나갈 것임.

Compilers: Principles, Techniques, and Tools (Dragon Book) (stanford.edu)

 

2판으로 900 페이지가 넘는다.


컴파일러란?

인간 위주의 프로그래밍 언어를 컴퓨터가 실행할 수 있는 형태로 변역해주는 것이 컴파일러이다.

 

1-1. 언어처리기

컴파일러는 원시 언어(source language)를 읽어 목표 언어(target language)로 번역하는 프로그램이다.

 

 

목표 프로그램이 실행 가능한 기계어(machine-language) 프로그램이라면 사용자에 의해서 호출되어 입력을 처리하고 출력을 생산할 수 있다.

 

 

인터프리터(interpreter)는 다른 종류의 일반적인 언어 처리기이다. 번역으로 목표 프로그램을 생산하는 대신에 인터프리터는 사용자가 제공한 입력에 대해서 원시 프로그램에서 명기된 연산을 직접 실행한다.

 

 

컴파일 방법과 인터프리터 방법을 결합하는 방식도 있다 ex) Java

자바 원시프로그램은 바이트코드라 불리는 중간코드로 컴파일한 후 바이트 코드는 가상 기계에 의해서 인터프리팅된다.

 

 

실행 가능한 목표 프로그램을 생성하기 위해 여러 다른 프로그램이 필요할 수 있다.

전처리기: 원시프로그램을 모으거나 매크로라 불리는 축약을 원시 언어 문장으로 확장, 컴파일러에 입력으로 제공

어셈블러: 재배치 가능한 기계어 코드를 생산.

링크/로더: 재배치 가능한 목적 파일과 라이브러리 파일들과 결합되어 실제 실행 가능한 코드가 된다. 

링커는 외부 메모리 주소, 로더는 모든 실행 가능한 목적파일을 통합하여 실행을 위해 기억장소에 적재한다.

 

반응형

댓글