LLVM Cookbook (한 권으로 끝내는 컴파일러와 LLVM)

LLVM Cookbook (한 권으로 끝내는 컴파일러와 LLVM)

$32.92
Description
[LLVM Cookbook]은 컴파일러에 익숙하지 않은 독자들을 위해 LLVM 활용 예제로 친절하게 컴파일러 내부 동작 구조 및 관련 도구를 설명한다. GCC 컴파일러를 익숙하게 다루는 독자라면 최신 컴파일러를 이해하기 위해 꼭 보길 권장한다. 코드를 한 줄씩 설명해주기 때문에, 컴파일러 코드를 처음 접하는 독자도 이론이 실제로 적용된 코드를 살펴볼 수 있는 좋은 기회가 될 것이다.
저자

메이유르판디

저자메이유르판디(MayurPandey)는컴파일러와컴파일러툴개발에헌신하는소프트웨어엔지니어이자열렬한오픈소스지지자다.LLVM오픈소스커뮤니티에서활동적인기여자며,타이젠(Tizen)프로젝트에서컴파일러팀의일원으로일하면서다른컴파일러기술과함께실천적인경험을쌓아왔다.
인도NIT알라하바드(Allahabad)대학에서정보기술(informationtechnology)학사학위를받고현재인도방갈로르에서살고있다.

목차

1장.LLVM설계와사용법
__소개
__모듈설계이해
__Clang/LLVM을이용한크로스컴파일링
__C소스코드를LLVM어셈블리로변환
__IR을LLVM비트코드로변환
__LLVM비트코드를타겟머신어셈블리로변환
__LLVM비트코드를LLVM어셈블리로역변환
__LLVMIR변환
__LLVM비트코드링킹
__LLVM비트코드실행
__C프론트엔드Clang사용
__GO프론트엔드사용
__드래곤에그사용

2장.프론트엔드작성단계
__소개
__TOY언어정의
__렉서구현방법
__추상구문트리정의
__파서구현
__단순표현식의파싱
__이항표현식의파싱
__파싱을위한드라이버적용
__TOY언어대상렉서실행
__각추상구문트리클래스를위한IR코드생성기법정의
__표현식을위한IR코드생성
__함수를위한IR코드생성
__IR코드최적화기능추가

3장.프론트엔드확장과JIT컴파일추가
__소개
__조건문코드생성:if/then/else
__반복문코드생성
__사용자정의연산자:이항연산자
__사용자정의연산자:단항연산자
__JIT컴파일추가

4장.최적화준비
__소개
__최적화의다양한레벨
__LLVM패스구현
__opt툴로구현한패스실행
__새로운패스에서다른패스사용
__패스매니저에패스등록
__분석패스구현
__에일리어스분석패스구현
__다른분석패스사용

5장.최적화구현
__소개
__죽은코드제거패스
__인라인변환패스작성
__메모리최적화패스작성
__LLVMIR병합
__반복문변환과최적화
__표현식재배치
__IR벡터화
__기타최적화패스

6장.타겟독립적코드생성기
__소개
__LLVMIR의생명주기
__GraphViz를이용한LLVMIR제어흐름그래프시각화
__TableGen을이용한타겟지정
__명령어집합정의
__머신코드디스크립터추가
__MachineInstrBuilder클래스구현
__MachineBasicBlock클래스구현
__MachineFunction클래스구현
__명령어선택자작성
__SelectionDAG교정
__SelectionDAG최적화
__DAG에서명령어선택
__SelectionDAG에서명령어스케줄링

7장.머신코드최적화
__소개
__머신코드의공통부분표현식제거
__유효구간분석
__레지스터할당
__프롤로그-에필로그코드삽입
__코드생성
__꼬리호출최적화
__형제호출최적화

8장.LLVM백엔드작성
__소개
__레지스터와레지스터집합정의
__호출규약정의
__명령어집합정의
__프레임저수준화구현
__명령어출력
__명령어선택
__명령어인코딩추가
__보조타겟지원
__다중명령어로저수준화
__타겟등록

9장.다양한프로젝트에서의LLVM활용
__소개
__LLVM의예외처리
__Sanitizer사용방법
__LLVM으로가비지컬렉터작성
__LLVMIR을자바스크립트로변환
__Clang정적분석기의사용
__bugpoint사용
__LLDB사용
__LLVM유틸리티패스사용

출판사 서평

★이책에서다루는내용★

■LLVM의모듈식디자인과LLVM도구소개
■언어에대한프론트엔드작성
■JIT기능추가및여러언어의프론트엔드사용
■LLVM패스구조및LLVM패스매니저이해
■분석패스개발및최적화패스변환
■TOY언어로LLVM백엔드구현
■SelectionDAG단계에서코드최적화및변수레지스터할당

★이책의대상독자★

컴파일러개념에익숙하고LLVM기반구조를이해하고탐험하기를원하며,업무에활용하고자하는컴파일러엔지니어를위한것이다.
또한컴파일러와직접연관은없지만수천라인의코드를작성하는프로그래머를위한책이기도하다.컴파일러동작방식에대한지식을바탕으로최적화된코드를작성해고성능의깔끔한프로그램을개발할수있다.

★이책의구성★

1장,‘LLVM설계와사용법’에서는LLVM과Clang를다운로드해설치하는방법과LLVM내부동작과관련된여러예제를통해LLVM의모듈구조에대해설명한다.또한프론트엔드에관련된다양한예제를다룬다.
2장,‘프론트엔드작성단계’에서는프로그래밍언어의프론트엔드구현방법을설명한다.TOY언어를위해하위단계부터간단한컴파일러프론트엔드를만들며,이를통해프론트엔드언어가LLVMIR로변환되는과정을눈으로확인해본다.
3장,‘프론트엔드확장과JIT컴파일추가’에서는TOY언어의고급기능을살펴보고프론트엔드에JIT컴파일기능을추가한다.대부분의현대프로그래밍언어에서찾을수있는강력한기능을구현한다.
4장,‘최적화준비’에서는LLVMIR의패스기반구조를다룬다.다양한최적화단계를탐험하고,각단계에서어떤최적화기술이적용되는지살펴본다.LLVM패스를스스로작성할수있게단계별로설명한다.
5장,‘최적화구현’에서는흔히사용되는LLVMIR에대한다양한최적화패스구현방법을설명한다.또한아직LLVM오픈소스코드에공개되지않은벡터화기술관련내용도살펴본다.
6장,‘타겟독립적코드생성기’에서는타겟독립적코드생성기의추상적인기반구조에대해설명한다.LLVMIR이최종적으로기계코드를생성하기위해사용하는SelectionDAG로어떻게변환되는지도살펴본다.
7장,‘머신코드최적화’에서는SelectionDAG가어떻게최적화되고타겟레지스터가어떻게변수에할당되는지살펴본다.또한SelectionDAG의최적화와여타레지스터할당기술에대해서도설명한다.
8장,‘LLVM백엔드작성’에서는레지스터와명령어집합,호출규약,인코딩,보조타겟기능등타겟아키텍처를표현하는방법을설명한다.
9장,‘다양한프로젝트에서의LLVM활용’에서는LLVMIR기반구조를사용할수있는다양한프로젝트를살펴본다.LLVM은단순한컴파일러가아니라컴파일러기반구조다.코드조각들에적용할수있는다양한프로젝트를살펴보고유용한정보를얻는것이9장의목표다.