Compiler

Education/C++ programming 2012. 1. 13. 11:28

 
  1. 컴파일러(Compiler)

    • 컴퓨터가 이해할 수 있는 기계어 코드로 변역해주는 역할

    • 컴파일 프로그램은 대개 디스트에 저장,

    • 컴파일러는 실행 시에 모든 문장을 먼저 구문적으로 하나씩 분해

    • 다른 문장을 참조하는 경우 그 문장이 정확하게 참조될 수 있도록 여러번의 연속적인 상태에서 결과코드 생성

    • 원시프로그램(Source program)을 기계어(Machine language)로 변환시켜 목적프로그램(Object program)으로 번역해주는 특수한 프로그램

      • 목적프로그램(Object program) : 프로세서가 한 번에 한 명령씩 처리하거나 또는 실행시킬 수 있는 기계코드

    • 목적파일을 실행파일로 바꾸기 위한 처리

      • 실행파일이 운영체제의 요건에 맞도록 형태를 바꿈

      • 스타트업(StartUp)이라는 추가코드 가져와야 함

      • 링크(Link) : 목적파일에 실행파일로 만드는 동작

      • 링커(Linker) : 링크를 해주는 프로그램

    • 프로그램 작성되는 과정

      • 소스파일은 컴파일러에 의해 컴파일되어 목적파일 됨

      • 목적파일은 링커에 의해 링크되어 최종적으로 실행파일 됨

        [소스코드] --컴파일--> [목적파일] --링커--> [실행파일] 


    • 빌드(Build) : 컴파일과 링크를 통해 실행파일을 만드는 과정

    • 소스파일을 번역하여 곧바로 실행파일을 만들지 않고 목적파일을 거치는 이유

      • 여러개의 소스를 합쳐서 하나의 실행파일 생성때문임

    • 각 소스파일의 명령을 번역한 기계 코드를 가진 목적 파일의 연결하여 하나의 실행파일 생성

    • 링크단계에서 이미 만들어진 라이브러리도 결합


  1. 인터프리터(Interpreter)

    • 원시코드 명령문들을 한 번에 한 줄씩 읽어들여서 실행하는 프로그램

    • 원시프로그램 문장들이 입력되면 인터프리터는 문장들의 기능을 정의하고 그 기능대로 수행됨

    • 컴퓨터의 주기억장치에 저장된 프로그램이나 또는 많은 프로그램에서는 ROM 형태로 되어있음

    • 목적프로그램에 의해서 수행되는 것보다 프로그램의 수행속도가 훨씬 느림

      • 각 명령들을 매번 통역해야하기 때문임


  1. 컴파일러와 인터프리터의 차이점

    • 실행

      • 컴파일러

원시 프로그램 -> 컴파일러 -> 목적 프로그램

      • 인터프리터

원시 프로그램-> 인터프리터 -> 실행 명령문

    • 프로그램 수행 속도

      • 컴파일러

        • 번역시간은 조금 걸리지만 수행속도 빠름

          • 프로그램 단위로 프로그램 전체를 함께 번역하고 함께 수행

      • 인터프리터

        • 수행속도 느림

          • 한 줄씩 한 줄씩 번역하고 수행

        • 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
Posted by 초상큼발랄
l