위키득계정 ↗
기술

LLVM LLC

LLVM LLC기술
실행 이름
llc
분류
LLVM 정적 컴파일 도구
입력
LLVM IR과 비트코드
출력 예
어셈블리와 오브젝트 파일
LLVM LLC는 LLVM 중간 표현을 대상 아키텍처의 어셈블리나 오브젝트 코드로 변환하는 정적 컴파일 도구다. 코드 생성 단계의 결과를 직접 살펴보는 데 활용한다.

중간 표현에서 기계 코드로

입력의 대상 정보를 바탕으로 코드를 생성하며 아키텍처와 CPU 설정을 지정할 수도 있다. 어셈블리 출력은 이후 어셈블러와 링커로 처리할 수 있다. 소스 언어의 문법을 해석하는 프런트엔드와는 담당하는 단계가 다르다.

대상 설정의 영향

같은 입력도 CPU 종류와 지원 명령 집합, 최적화 수준에 따라 다른 명령으로 변환될 수 있다. 실제 배포 대상이 제공하지 않는 기능을 켜면 생성된 코드가 맞지 않을 수 있다. 코드 비교 시에는 입력뿐 아니라 대상 설정도 동일하게 유지한다.

출력과 검사

어셈블리와 오브젝트 등 출력 종류를 선택할 수 있으나 모든 타깃이 모든 종류를 지원하는 것은 아니다. 생성된 텍스트를 검사하는 테스트와 실제 실행 검사는 서로 다른 문제를 확인한다. 코드 생성 오류를 조사할 때는 입력을 축소해 재현 조건을 정리한다.

관련 문서

LLVM Opt / LLVM Reduce / FileCheck / LLVM Objdump