본문 바로가기
ASAC

[ASAC 06] 컴파일러 언어와 인터프리터 언어

by suhsein 2024. 8. 28.
728x90
이 글은 ASAC 06기를 수강하며 강의 자료 참고 및 추가 자료 수집을 통해 작성된 글입니다.

https://suhsein.tistory.com/17

 

컴퓨터구조 - 컴파일러 언어와 인터프리터 언어

🗨️Compiler 언어 vs Interpreter 언어Compiler 언어Source file 전체를 한꺼번에 번역해 Object file을 생성컴파일 단계와 실행 단계가 분리Linker가 Object file과 Libary files를 Linking하여 Execute file 생성 💡 Source

suhsein.tistory.com

 

Compiler와 Interpreter

컴파일과 인터프리트의 결과는 모두 기계어이다. 

컴파일과 인터프리트의 차이점은 소스 코드를 기계어로 변환하는 과정에 있다. 

 

Compile

컴파일은 번역이라고 할 수 있다. 실행 파일 전체를 통으로 기계어로 바꾼 뒤, exe 파일로 저장한다. 

 

  1. C나 C++의 경우 컴파일 언어이기 때문에, GCC(GNU Compiler Collection <- GNU C Compiler)를 통해서 .obj 파일로 컴파일 된다. 
  2. 이후에 .obj 파일을 assembly와 linking (내부에서 사용하는 라이브러리를 연결)하여 기계어로 변환된 실행 가능한 .exe 파일이 생성된다. 
  3. 런타임에는 실행 파일(.exe)을 실행하기만 하면 된다.

 

IDE를 사용하면 컴파일 과정에서 소스 코드의 문법 오류를 발견할 수 있고, 컴파일 시 발생하는 에러를 컴파일 에러라고 한다.

 

Interpret

인터프리트는 통역이라고 할 수 있다. 런타임에 코드를 한 줄 씩 기계어로 바꾼다.

자바는 컴파일 과정이 있는 인터프리트 언어이다.

 

  1. 자바 소스코드를 먼저 javac를 통해서 .class 파일로 컴파일 한다.
  2. 클래스들을 묶어서 압축된 .jar 파일을 생성한다. 
  3. JVM(Java Virtual Machine)으로 인터프리트 한다.
    • 운영체제마다 읽을 수 있는 기계어가 다른데, jvm이 플랫폼으로 동작하여 각 os에 맞게 인터프리트
    • JVM 내부에는 just-in-time 컴파일러가 존재한다. 자주 사용되는 함수는 미리 컴파일 해둘 수 있다. 

 

자바 뿐만 아니라 자바스크립트에도 just-in-time 컴파일러가 존재한다. (TurboFan)

 

https://medium.com/@minhaz217/lets-understand-the-javascript-just-in-time-compiler-jit-and-how-the-v8-engine-works-ff6276d131a1
 

Let's Understand the JavaScript Just In Time Compiler (JIT) and How the V8 engine works

Before diving into JIT, it’s important to grasp the functioning of interpreters and compilers, as well as their respective advantages and…

medium.com

 

728x90