컴파일러와 인터프리터

중간 단계 언어

2.3) 중간 단계 언어

먼저 생각해보자. C는 익히 알고 있듯이 기계어보다 사람이 이해하기 쉬운 고급 언어다또한 우리는 C를 이용하여 작성한 소스 코드를 실행 가능한 파일로 만들기 위해 컴파일 과정을 거쳐야 한다그렇다면 우리가 작성한 소스 코드와 기계어 사이에 중간 단계의 언어가 있어서우리의 소스 코드가 이 중간 단계의 언어로 먼저 번역된 다음,번역된 중간 단계의 언어가 기계어로 번역되는 상황도 생각할 수 있다번역할 거면 바로 번역하지 왜 가운데 단계가 하나 더 들어가느냐고 묻는다면사실 생각대로 없어도 된다(없는 것이 당연히 번역이 더 빠르게 된다). 그러나 이것이 문제되는 이유 첫 번째는 기계어에 대해 우리가 아는 것이 하나도 없다는 점이고기계어를 안다손 쳐도 소스 코드를 하나하나 기계어로 번역하는 과정은 무지하게 헷갈린다는 점이다둘째는 이외의 다른 언어에 대한 컴파일러 B를 새롭게 개발하는 상황이 왔을 때 이 과정에서 사용한 중간 단계 언어 번역기를 그대로 사용할 수 있다는 이점이 있기 때문이고셋째는 기계어는 기계마다 그 내용이 다르기 때문에 기계가 바뀔 때마다 해당 기계에 맞는 기계어로 번역해야 하는데중간 단계 언어 번역기가 도입되면 이 과정이 아주 단순해지기 때문이다다음 이미지를 보면 이에 대해 이해할 수 있다.

 

 

이는 여기서만 사용되는 기술이 아니다. Java 프로그래밍 언어는 JVM이라는 가상 머신에서 실행되기 전에 중간 단계 언어인 자바 바이트 코드로 변환된다. C# 프로그래밍 언어는 IL이라는 중간 단계 언어로 컴파일 된다이제 여러분도 중간 단계 언어가 필요하다는 사실을 받아들일 수 있을 것이다.

댓글

댓글 본문
  1. 이완
    LLVM 자료 찾다가 보고 갑니다. 감사합니다.
graphittie 자세히 보기