수업내용정리/컴파일러

1.1 컴파일러

주노팍 2023. 11. 18. 17:47
반응형

컴파일러

 - 간단하게 말해서 언어를 번역하는 번역기 

 - 컴퓨터와 인간사이에 의사전달을 하기 위한 것 고급언어를 저급언어(기계어)로 번역한다.

 - 번역기에는 어셈블러(assembler), 컴파일러(compiler), 인터프리터(interpreter), 프리프로세서(preprocessor)

   등이 있는데 이들 중 가장 대표적인 번역기가 컴파일러이다.

 

번역기 종류 

 

 

컴파일러와 인터프리터

 

1). 컴파일러

     - 번역 후에 실행된다.

     - 효율적이며 반복문 처리에 효과가 있다.

     - 큰 기억장소를 요구한다.

     - FORTRAN, COBOL, PASCAL, C, C++, JAVA

 

     - 컴파일러의 논리적 구조

  • 어휘분석 : 원시 프로그램을 읽어 토큰단위로 분리하여 출력
  • 구문문석 : 토큰들이 주어진 문법에 맞는지 검사
  • 의미분석 : 구문분석단계의 결과인 구문트리에 대하여 어떤 의미와 기능을 하는 것인지 분석하고 기능이 올바르게 수행될 수 있도록 환경을 조성
  • 중간코드생성 : 코드최적화가 되기 위해 먼저 처리되는 작업
  • 코드최적화 : 효율적으로 코드를 만들어 프로그램 실행 시 기억공간이나 실행시간을 절약하기 위해 수행되는 작업
  • 목적코드생성 : 최적화된 코드를 그대로 레지스터나 기억장소 위치를 정해서 목적코드를 생성

     => 고급언어를 컴파일러가 이러한 논리적 구조 6단계를 거쳐 저급언어로 번역한다.

 

2). 인터프리터

     - 번역과 동시에 실행된다.

     - 컴파일러와 달리 원시 프로그램을 입력 프로그램의 논리적인 순서에 따라 문장 단위로 번역한 후, 곧바로 실행한다.

     - 실행시간이 길다.

     - 사용자와의 대화식으로 동작

     - 융통성이 있다

     - LISP, APL, SNOBOL

   

1-패스 컴파일러 / 2-패스 컴파일러

- 컴파일러는 위에서 언급한 6단계의 논리적인 구조를 가지고 있다.

- 이러한 구조를 실제 구현하게 되는 경우 1-패스 컴파일러 또는 2-패스 컴파일러 방법을 이용한다.

 

  • 1-패스 컴파일러 : 초창기에 컴파일러를 만들 때 사용 했던 방법으로 컴파일러의 전 과정을 하나의 패스 구현하는 방법
  • 2-패스 컴파일러 : 컴파일러의 구성을 중간코드를 기점으로 하여 앞 단계를 전반부, 뒷 단계를 후반부로 구성하는 방법

 

반응형

'수업내용정리 > 컴파일러' 카테고리의 다른 글

1.2 형식언어  (0) 2023.11.18
1.1.1 컴파일러 개요 요약  (1) 2023.11.18