피드로 돌아가기
QBE - 컴파일러 백엔드: 버전 1.3
GeekNewsGeekNews
Infrastructure

QBE - 컴파일러 백엔드: 버전 1.3

코드 10%로 상용 성능 70% 달성하는 미니멀리즘 백엔드 QBE 1.3

neo2026년 6월 2일5advanced

Context

단순성과 미니멀리즘을 지향하는 컴파일러 백엔드로서 LLVM 및 Cranelift 대비 극도로 작은 코드베이스 유지 목적. 기존 버전의 부족한 최적화 패스와 제한적인 ABI 지원으로 인한 범용성 부족 및 성능 한계 직면.

Technical Solution

  • GVN/GCM, 루프 최적화, CFG 단순화 등 검증된 최적화 패스 도입을 통한 코드 생성 효율 증대
  • 함수 단위 Streaming Compilation 모델 유지 및 일관성 확보를 위해 Inlining 기법 의도적 제외
  • OCaml 기반 mgen 도구를 활용하여 Lispy IL 패턴을 C 매칭 코드로 자동 변환하는 명령어 선택 로직 설계
  • Plan9 C 컴파일러 방식의 번호 매기기 접근법을 적용한 명령어 DAG Matching 구현
  • DYNCONST 플래그 도입을 통한 전역 심볼 간접 접근 표현 및 PIC/PIE 지원 강화
  • Windows ABI 지원 추가로 amd64_win 타겟 컴파일 가능 구조 확보

시스템 제약 사항이 극심한 환경(예: 8MB RAM)에서는 LLVM 같은 거대 툴체인보다 PIC/PIE를 지원하는 경량 백엔드 채택 검토. 최적화 도입 시 전체 아키텍처 모델(Streaming vs Global)과의 정합성을 먼저 검토하여 불필요한 복잡도 증가 방지.

원문 읽기