-
컴파일러(Compiler)
-
컴퓨터가 이해할 수 있는 기계어 코드로 변역해주는 역할
-
컴파일 프로그램은 대개 디스트에 저장,
-
컴파일러는 실행 시에 모든 문장을 먼저 구문적으로 하나씩 분해
-
다른 문장을 참조하는 경우 그 문장이 정확하게 참조될 수 있도록 여러번의 연속적인 상태에서 결과코드 생성
-
원시프로그램(Source program)을 기계어(Machine language)로 변환시켜 목적프로그램(Object program)으로 번역해주는 특수한 프로그램
-
목적프로그램(Object program) : 프로세서가 한 번에 한 명령씩 처리하거나 또는 실행시킬 수 있는 기계코드
-
-
목적파일을 실행파일로 바꾸기 위한 처리
-
실행파일이 운영체제의 요건에 맞도록 형태를 바꿈
-
스타트업(StartUp)이라는 추가코드 가져와야 함
-
링크(Link) : 목적파일에 실행파일로 만드는 동작
-
링커(Linker) : 링크를 해주는 프로그램
-
-
프로그램 작성되는 과정
-
소스파일은 컴파일러에 의해 컴파일되어 목적파일 됨
-
목적파일은 링커에 의해 링크되어 최종적으로 실행파일 됨
[소스코드] --컴파일--> [목적파일] --링커--> [실행파일]
-
-
-
빌드(Build) : 컴파일과 링크를 통해 실행파일을 만드는 과정
-
소스파일을 번역하여 곧바로 실행파일을 만들지 않고 목적파일을 거치는 이유
-
여러개의 소스를 합쳐서 하나의 실행파일 생성때문임
-
-
각 소스파일의 명령을 번역한 기계 코드를 가진 목적 파일의 연결하여 하나의 실행파일 생성
-
링크단계에서 이미 만들어진 라이브러리도 결합
-
인터프리터(Interpreter)
-
원시코드 명령문들을 한 번에 한 줄씩 읽어들여서 실행하는 프로그램
-
원시프로그램 문장들이 입력되면 인터프리터는 문장들의 기능을 정의하고 그 기능대로 수행됨
-
컴퓨터의 주기억장치에 저장된 프로그램이나 또는 많은 프로그램에서는 ROM 형태로 되어있음
-
목적프로그램에 의해서 수행되는 것보다 프로그램의 수행속도가 훨씬 느림
-
각 명령들을 매번 통역해야하기 때문임
-
-
-
컴파일러와 인터프리터의 차이점
-
실행
-
컴파일러
-
-
원시 프로그램 -> 컴파일러 -> 목적 프로그램
-
인터프리터
원시 프로그램-> 인터프리터 -> 실행 명령문
-
프로그램 수행 속도
-
컴파일러
-
번역시간은 조금 걸리지만 수행속도 빠름
-
프로그램 단위로 프로그램 전체를 함께 번역하고 함께 수행
-
-
-
인터프리터
-
수행속도 느림
-
한 줄씩 한 줄씩 번역하고 수행
-
-
CPU 사용 시간 낭비
-
-
-
메모리 할당
-
컴파일러
-
메모리를 많이 사용
-
프로그램을 번역한 뒤, 번역된 기계어를 저장하기 위해 메모리 사용
-
-
-
인터프리터
-
메모리를 사용하지 않음
-
프로그램을 한 줄씩 번역하고 곧바로 수행하므로 메모리 사용안함
-
-
-
-
프로그램 저장 위치
-
컴파일러
-
디스크에 저장
-
-
인터프리터
-
ROM에 저장
-
-
-
사용분야
-
컴파일러
-
실행 시간의 효율성을 중하는 프로그래밍 언어
-
-
인터프리터
-
사용자의 융통성을 중시하는 프로그래밍 언어
-
-
-
정리
-
비교단위
컴파일러
인터프리터
번역단위
프로그램 단위 번역
명령 줄 단위로 번역
수행과정
함께 번역, 함께 수행
줄 단위로 변역 수행
목적프로그램
번역 후 저장을 위해 필요
바로 수행하므로 불필요
효율성
효율성 좋음
효율성 떨어짐
기억장소
많이 필요
적게 필요
'Education > C++ programming' 카테고리의 다른 글
Variable (1) | 2012.01.13 |
---|---|
리눅스 c++ 컴파일 (2) | 2009.11.24 |
Triangle & Rectangle program code (0) | 2009.11.24 |
피보나치 수열 (2) | 2009.11.24 |