먼저 컴파일러의 목적은 다음과 같다.
먼저, 언어는 다음 3가지로 분류할 수 있다.
machine language : 컴퓨터가 직접 실행 할 수 있는 프로그램
- assembly language : 기계어 프로그램에서 명령과 메모리주소를 심볼 형태로 표시(특정 기계에 종속)
- high level language : 기계와 독립적, 간결하고 자연어와 유사
컴파일러의 목적은 high level language를 machine language로 번역하는것이다.
컴파일러와 관련된 프로그램은 아래와 같다.
Interpreter : 즉시 소스코드를 실행, 컴파일된 코드보다 110배이상 느림
Assembler : 어셈블리어를 기계어로 바꿈
Linker : 컴파일된 코드들을 실행가능한 파일로 묶어줌
Loader : 코드를 메모리에 올려줌(base adddress 기준의 상대주소로 모두 재배치)
Preprocessor : 실제 translation 이전에 compiler에 의해 호출(주석 삭제, 외부 파일 include,macro substitution 진행)
Profiler : 실행에 관한 통계치들을 수집
아래는 관련된 프로그램과 컴파일러의 흐름도이다.