Files
2025-02-Compiler/notes/1.md

1.1 KiB

컴파일러 1

Interpreter in Modern Processors

Compiler

  • Front-End

보이는 부분(HW에 신경을 안써도 됨)

  • Back-End

HW에 밀접한 최적화를 해줌

General Structure of a Modern Compiler

  • Front-End
    • Lexial Analysis
    • Syntax Analysis
    • Semantic Analysis
  • Code Generation - 1
  • Back-End
    • Control/DataFlow Analysis
    • Optimization
    • Code Generation - 2

이런 모듈식 구조는 다양한 언어와 하드웨어에 쉽게 적용할 수 있도록 도운다.

Lexical Analysis (Scanner)

프로그램을 token의 의미 단위로 나눔. 그리고 의미가 없는 단위를 지움.

보통 FSA로 구현함.

Syntax Analysis (Parser)

미리 있는 Grammar를 바탕으로 Syntax Correctness를 진행함.

Semantic Analysis

  • identifier 정의 등
  • 타입 체크
  • 스코프 체크
  • 오버로딩 모호화 해소
  • IR로 변환

Optimization

최적화함

  • 상수 최적화
  • 안쓰는 변수
  • loop에서 안바뀌는 변수
  • 다시 똑같이 계산하는 변수 제거
  • ...

Code Generation