"컴파일러"의 두 판 사이의 차이
(컴파일 문서로 일부 내용 이동) |
|||
4번째 줄: | 4번째 줄: | ||
컴파일러(comfiler)라는 개념은 [[그레이스 호퍼]](Grace Hopper)가 "컴퓨터의 교육"(The Education of a Computer)이라는 제목의 보고서를 발표함으로서 최초로 정의되었다. 보고서에서 호퍼는 고급 [[프로그래밍 언어]]로 작성된 코드를 컴퓨터가 이해할 수 있는 이진(binary) 코드로 만들어 주는 기술을 소개해, 오늘날 컴파일러의 개념과 프로그래밍 코드의 해석방법을 정의했다. 호퍼는 자신이 "A-0"이라는 컴파일러를 직접 개발하기도 했다. | 컴파일러(comfiler)라는 개념은 [[그레이스 호퍼]](Grace Hopper)가 "컴퓨터의 교육"(The Education of a Computer)이라는 제목의 보고서를 발표함으로서 최초로 정의되었다. 보고서에서 호퍼는 고급 [[프로그래밍 언어]]로 작성된 코드를 컴퓨터가 이해할 수 있는 이진(binary) 코드로 만들어 주는 기술을 소개해, 오늘날 컴파일러의 개념과 프로그래밍 코드의 해석방법을 정의했다. 호퍼는 자신이 "A-0"이라는 컴파일러를 직접 개발하기도 했다. | ||
− | == | + | == 구성 == |
− | 컴파일러는 | + | 컴파일러는 총 3가지로 구성되어 있다. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
;앞단 | ;앞단 | ||
30번째 줄: | 15번째 줄: | ||
;뒷단 | ;뒷단 | ||
뒷단 또는 백엔드(back end)는 각각의 [[CPU]] [[아키텍처]]에 대해 코드 최적화를 수행하며 최종 코드를 생성한다. | 뒷단 또는 백엔드(back end)는 각각의 [[CPU]] [[아키텍처]]에 대해 코드 최적화를 수행하며 최종 코드를 생성한다. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== 같이 보기 == | == 같이 보기 == |
2018년 7월 16일 (월) 22:29 판
컴파일러(compiler)란 프로그래밍 과정에서 인간이 작성한 소스 코드를 컴퓨터가 이해할 수 있는 기계어 또는 바이트코드로 번역해 주는 프로그램을 말한다. 처리기(processor)라고도 한다. 시스템에서 실행되는 객체 코드를 생성하는 컴파일러를 크로스 컴파일러라고 한다.
역사
컴파일러(comfiler)라는 개념은 그레이스 호퍼(Grace Hopper)가 "컴퓨터의 교육"(The Education of a Computer)이라는 제목의 보고서를 발표함으로서 최초로 정의되었다. 보고서에서 호퍼는 고급 프로그래밍 언어로 작성된 코드를 컴퓨터가 이해할 수 있는 이진(binary) 코드로 만들어 주는 기술을 소개해, 오늘날 컴파일러의 개념과 프로그래밍 코드의 해석방법을 정의했다. 호퍼는 자신이 "A-0"이라는 컴파일러를 직접 개발하기도 했다.
구성
컴파일러는 총 3가지로 구성되어 있다.
- 앞단
앞단 또는 프런트 엔드(front end)는 토큰화를 위한 어휘 분석(Lexing), 파스 트리 구성을 위한 구문 분석(Parsing), 중간 코드를 위한 의미 분석 등을 처리한다.
- 가운데단
가운데단 또는 미들 엔드(middle end)는 중간 코드에 대해 프로그램의 분석과 최적화를 처리한다.
- 뒷단
뒷단 또는 백엔드(back end)는 각각의 CPU 아키텍처에 대해 코드 최적화를 수행하며 최종 코드를 생성한다.