위키득계정 ↗
기술

Cranelift

Cranelift기술
프로젝트 조직
Bytecode Alliance
소프트웨어 유형
코드 생성기
입력
대상 독립 중간 표현
출력
실행 가능한 기계 코드
Cranelift는 대상에 독립적인 중간 표현을 실행 가능한 기계 코드로 변환하는 코드 생성기다. 여러 프로세서 아키텍처에 대응하며 WebAssembly 런타임과 다른 언어의 컴파일러 백엔드에 활용할 수 있다.

중간 표현에서 기계 코드로

컴파일러의 중간 표현을 받아 대상 프로세서에서 실행할 명령으로 바꾼다. 소스 언어를 직접 분석하는 프런트엔드와는 역할이 다르다. 같은 중간 표현을 여러 대상의 코드 생성과 연결할 수 있는 구조다.

런타임과 백엔드의 관계

Wasmtime이 WebAssembly를 실행하는 과정에서 코드 생성기로 사용한다. Cranelift만으로 완전한 WebAssembly 실행 환경이 되는 것은 아니며 외부 런타임의 구성 요소로 연결된다. WebAssembly 이외의 컴파일러 백엔드에도 사용할 수 있다.

여러 대상의 지원

x86-64와 AArch64 및 s390x와 RISC-V 계열의 백엔드를 제공한다. 호출 규약과 지원 기능은 대상별로 구분된다. 코드 생성기는 대상의 명령과 호출 규칙을 반영해 상위 컴파일 단계의 결과를 실행 코드로 옮긴다.

관련 문서

Binaryen / Wasmtime / WAMR / 웹어셈블리 / 컴파일러 / Rust