https://www.codecademy.com/articles/cpp-compile-execute-locally

컴파일러란?

 

고급언어(C, CHILL, FORTRAN, COBOL)로 작성된 프로그램을 기계어(0,1)로 번역하는 것

 

즉 개발자가 고급언어로 프로그래밍 한 코드를 CPU가 이해할 수 있게 변환해주는 것이 컴파일러입니다.

 

컴파일과 빌드의 차이점은 무엇일까요?

 

컴파일은 단순히 소스를 기계어로 번역해주는 것이고

 

빌드는 실행 가능한 파일로 만들어주는 것입니다. 빌드 안에 컴파일이 포함된다고 생각하시면 됩니다.

 

 

절차

 

원시프로그램.c -> 프리프로세서(어휘, 구문, 의미 분석) -> 컴파일러(중간코드 생성)

-> 어셈블러(결과 : 목적프로그램.obj) -> 로더/링커 -> 실행파일

 

 

어셈블러(Assembler) : 어셈블리어용 번역기, 보통 컴파일러의 목적코드가 어셈블리어가 됩니다.

 

프리프로세서(preprocesser) : 고급언어를 또 다른 고급언어로 번역하는 고급언어 번역기

 

전처리기라고도 불림, 컴파일 전에 미리 처리한다고 생각하시면 됩니다. ex) #include, #define, #undef

 

링커(Linker) : 목적 파일들을 합쳐서 하나의 실행 파일을 만듦

 

로더(Loader) : 실행 파일을 읽고 메인 메모리에 내용을 올림

 

로더의 기능 - 할당(공간 확보), 연결(시작주소 호출), 재배치, 적재

 

인터프리터(Interpreter) : 문장 단위로 번역과 동시에 실행한 후 그 결과를 출력하는 번역기

 

목적 파일(Object File) : 모듈별로 개발되어 컴파일된 파일, 수행코드, 데이터, 저장 주소 존재

 

로더의 종류

 

1. Compile And Go 로더 : 별도의 로더 없이 

 

실행 시마다 컴파일해야 함

 

2. 절대로더 : 단순히 목적 프로그램을 메모리에 로드하는 기능만 수행

 

3. 직접 연결 로더 : 일반적인 로더, 4가지 기능을 수행

 

4. 동적 적재 로더 : 실행 시 필요한 부분만 적재, 주기억 장치의 효율성이 높으나 로드 시간 딜레이 존재

 

 

 

 

 

 

+ Recent posts