개념

컴파일이란? 컴파일 과정

흑백 개발자 2025. 4. 12. 18:41
728x90

다트에서 컴파일은 Dart VM에서 JIT 컴파일 사용하여 Dart 언어로 작성된 소스 코드를 컴퓨터가 실행할 수 있는 형태로 변환하는 과정

 

 이 과정에는 코드의 어휘 및 구문 분석, 의미 검증, 중간 표현 생성, 코드 최적화, 그리고 최종 실행 코드 생성이 포함

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

컴파일은 프로그래밍 언어로 작성된 코드(소스 코드)를 컴퓨터가 실행할 수 있는 형태로 변환하는 과정입니다.
컴파일의 핵심 개념:

  1. 변환 과정: 사람이 읽을 수 있는 코드 → 기계가 실행할 수 있는 코드
  1. 컴파일러의 역할:
  • 소스 코드 구문 분석
  • 오류 검사
  • 최적화
  • 기계어 또는 중간 코드로 변환
  1. 컴파일 유형:
  • JIT(Just-In-Time): 프로그램 실행 중에 필요한 부분만 컴파일 (개발 모드에서 주로 사용)
  • AOT(Ahead-Of-Time): 실행 전 전체 코드를 미리 컴파일 (배포 모드에서 주로 사용)
  1. 플러터/Dart에서의 컴파일:
  • 개발 시: Dart VM에서 JIT 컴파일 사용 (핫 리로드 지원)
  • 릴리스 시: AOT 컴파일로 네이티브 코드 생성 (성능 최적화)

컴파일은 소스 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 과정이라고 생각하시면 됩니다.

ㅡㅡㅡㅡㅡ

 

JIT 컴파일과 컴파일 과정에 대해 설명해 드리겠습니다:JIT(Just-In-Time) 컴파일:

  • 프로그램이 실행되는 동안 필요한 시점에 코드를 컴파일하는 방식
  • Dart VM은 개발 모드에서 JIT 컴파일을 사용해 코드를 실행
  • 점: 빠른 개발 사이클(핫 리로드 가능), 실행 중 코드 최적화
  • 단점: 초기 실행 속도가 느릴 수 있음\

ㅡㅡㅡㅡㅡㅡㅡ

 

Dart의 컴파일 과정:

  1. 휘 분석(Lexical Analysis):
  • 소스 코드를 토큰(키워드, 식별자, 연산자 등)으로 분리
  1. 구문 분석(Parsing):
  • 큰을 분석하여 추상 구문 트리(AST)를 생성
  1. 미 분석(Semantic Analysis):
  • 타입 체크, 변수 선언 확인 등 코드의 의미 검증
  1. 간 코드 생성(IR Generation):
  • Dart VM이 이해할 수 있는 중간 표현(IR) 코드 생성
  1. 최적화(Optimization):
  • 코드 실행 효율을 높이기 위한 다양한 최적화 수행
  1. 코드 생성(Code Generation):
  • JIT 모드: 실행 중에 필요한 코드만 기계어로 변
  • AOT 모드: 실행 전에 모든 코드를 기계어로 변환

JIT 컴파일에서는 위 과정이 프로그램 실행 중에 동적으로 이루어지며, 특히 플러터 개발 모드에서는 코드 변경 시 변경된 부분만 빠르게 재컴파일하여 핫 리로드를 가능하게 합니다.

728x90

'개념' 카테고리의 다른 글

컴파일-JIT , AOT  (0) 2025.04.12
플러터에서 엔진?  (1) 2025.04.12
핫리로드,핫리스타트,일반 빌드의 차이점  (0) 2025.04.12
앱의 생명주기  (0) 2025.04.12
아키텍처란?- mvc,mvvm,클린아키텍쳐  (0) 2025.04.12