leesangwon0114

I am Research Engineer. Currently working in KT.

Compiler 1. 컴파일러의개요

20 Apr 2018 » Compiler

1.1 컴파일러의 필요성

언어 - 의사전달을 하기 위한 도구

언어에는 한국어 등 의 자연언어와 컴퓨터 언어와 같은 형식 언어가 존재

프로그래밍 언어 - 사람도 보고 ,컴퓨터도 봐야함 / 어떤 문제를 풀기 위해서 일련의 과정을 기술하는데 사용되는 언어

프로그래밍 언어는 저급언어, 고급언어로 분류됨


저급언어(low level language)

기계어 - 프로그래밍 언어의 초기에 사용된 언어로 0과 1로 구성된 언어

-> 기계어로 프로그래밍을 하기란 상당히 어렵고 매우 복잡함

어셈블리어 - 기계어의 단점을 보완하기위해 나온 언어

-> 0과 1로 구성된 기계어 대신 더하기에 ADD, 빼기에 SUB 등 대응하는 명령 기어를 사용함

어셈블러의 필요성

인간이 어셈블리어를 사용하니 컴퓨터는 이해하지못함 -> 어셈블리어를 기계어로 번역해주는 번역기


고급언어

어셈블리어도 저급 언어의 수준을 벗어나지는 못함

C, 파스칼, 알골 등 사람 중심의 고급 언어가 탄생

고급언어도 저급언어와 마찬가지로 기계어로 변환해주는 컴파일러가 필요함


컴파일러가 필요한 이유

인간은 문제를 해결하기 위해 컴퓨터를 사용하며 컴퓨터와 의사소통을 하는데 언어가 필요함

  • 컴퓨터는 기계어를 사용하지만 인간이 기계어를 사용하여 문제를 표현하기 어려워 인간은 사람 중심 언어인 고급언어를 사용
  • 그런데 고급 언어는 컴퓨터가 이해하지 못함
  • 따라서 인간이 사용하는 고급언어를 기계어로 변환해주는 컴파일러가 필요

1.3 번역기의 종류

번역기 - 한 프로그래밍 언어로 작성된 프로그램을 입력으로 하여 그와 동등한 의마를 갖는 다른 프로그래밍 언어로 된 프로그램을 출력하는 프로그램

Alt text


프리프로세서

소스 언어와 목적언어가 모드 고급언어인 번역기

프로그래밍 언어에 유용한 기능들을 추가하여 언어를 확장시켜주는 역할을 함

C 프리프로세서

파일포함기능, 매크로 처리기능, 조건부 컴파일


인터프리터

번역과 동시에 실행하지만 실행시간이 많이 늘어나는 단점 존재


크로스 컴파일러

소스 프로그램을 컴파일러가 수행되고 있는 컴퓨터의 기계어가 아닌 다른 컴퓨터의 기계어로 번역

목적프로그램이 용량이 큰 컴퓨터에서 실행해야할 경우 용량이 작은 컴퓨터에서 크로스 컴파일러에 의하여 번역만하고 실행은 큰 컴퓨터에서 함

ex) 컴퓨터에서 컴파일해 임베디드 시스템에서 실행


바이트코드 컴파일러

자바 언어 등의 소스프로그램으 바이트 코드라 불리는 중간코드로 컴파일 한 후 바이트코드는 자바 가상기계에서 인터프리트 되어 실행됨

Alt text