제목: 제대로 배우는 LLVM 코어 라이브러리

부제
LLVM 필수 기능 및 고급 툴 개발을 위한 사용법
저자 부르노 카도소 로페즈, 라파엘 오일러
역자 이준수

출간
2017424
정가 25,000
페이지 372
판형 크라운판
ISBN 979-11-86697-32-0 (93000)



 
책 소개

LLVM
필수 기능 및 고급 툴 개발을 위한 사용법

LLVM
은 최첨단 컴파일러 기술 프레임 워크다. 다양한 라이브러리로 쉽게 확장되도록 설계되었으며 컴파일러에 대한 원활한 경험을 제공하며 새로 접하는 개발자들이 쉽게 학습할 수 있도록 해준다.

이 책에서 배우게 될 내용

- Clang 툴을 포함한 소스 프로젝트, 정적 분석기, Compiler-RT, LLDB, DragonEgg, libc++ LLVM 테스트 슈트를 포함한 외부 LLVM 오픈 소스 프로젝트의 설정, 빌드, 그리고 설치
- 라이브러리와 독립 실행형 툴 사이의 LLVM 라이브러리 설계와 상호 작용 이해
- Clang 프론트엔드가 lexer, 파서, 그리고 구문 분석을 사용하는 방법을 배움으로써 소스 코드 처리 단계에 대한 지식을 향상시킨다.
- 커스텀 IR 분석과 변환 패스를 작성하는 동안 LLVM IR 파일을 사용하여 조작, 생성 및 재생한다.
- LLVM JIT(Just-In-Time) 컴파일 기능을 사용하기 위한 툴을 작성한다.
- 정적 분석기를 사용하여 버그를 찾고 코드를 개선한다.
- LibClang, LibTooling, 그리고 Clang 플러그인 인터페이스를 사용하여 소스 코드 분석과 변환 툴을 설계한다.

대상독자

초중급


저자 소개

부르노 카도소 로페즈 Bruno Cardoso Lopes
브라질 캄피나스 대학(University of Campinas)에서 컴퓨터 사이언스 박사 학위를 받았다. 2007년부터 LLVM에 참여했으며 몇 년 동안 유지해 온 MIPS 백엔드를 처음부터 다시 구현했다. 그의 다른 공헌 중 하나는 x86 AVX 지원을 작성하고 ARM 어셈블러를 향상시켰다는 점이다. 그의 연구 관심사는 코드 압축 기술 및 감소된 비트 폭 ISA. 과거에는 Linux 용과 FreeBSD 운영 체제용 드라이버도 개발했다.

라파엘 오일러 Rafael Auler
브라질의 캄피나스(Campinas) 대학에서 박사 학위를 취득했으며 같은 대학에서 컴퓨터 사이언스 석사 학위와 같은 분야 학사 학위를 취득했다. 석사 과정에 아키텍처 설명 파일을 기반으로 LLVM 백엔드를 자동으로 생성하는 개념 증명 도구를 작성했다. 현재 박사 과정 연구 주제는 동적 바이너리 변환, 저스트 인 타임(Just-in-Time) 컴파일러 및 컴퓨터 아키텍처가 포함된다. Rafael Microsoft Research 2013 Graduate Research Fellowship Award를 수상했다.


역자 소개

이준수
미국 텍사스 주립대에서 컴퓨터 사이언스로 박사 학위를 받았고, 현재 실리콘밸리의 빅데이터 서비스를 제공하는 스타트업에서 데이터 분석가(Data analyst)로 일하고 있다. 인터넷으로 연결된 세상의 거대한 데이터에서 금광을 찾는다는 사명을 갖고 있다. 멀지 않은 미래에 무인 자동차의 자율 주행 서비스가 본격화되면 대박이 날 것이라는 부푼 꿈을 꾸며 하루 하루를 살고 있다.


목차

1
. LLVM의 빌드와 설치
- LLVM 버전의 이해
- 프리빌트 패키지 얻기
- 소스를 사용한 빌드

2. 외부 프로젝트
- Clang extras의 소개
- DragonEgg 플러그인의 사용

3. 툴과 디자인
- LLVM의 기본적인 설계 원칙과 역사에 대한 소개
- 오늘날의 LLVM의 이해
- 컴파일 드라이버와의 상호 작용
- 독립 툴의 사용
- LLVM 내부 설계 살펴보기
- 첫 번째 LLVM 프로젝트의 작성
- LLVM 소스 탐색 보편적 충고

4. 프론트엔드
- Clang의 소개
- Clang을 이용한 프론트엔드 단계 학습하기
- 전체 코드

5. LLVM 중간 표현
- IR 포멧을 다루기 위해 기본 툴 연습하기
- LLVM IR 언어 구문의 소개
- 커스텀 LLVM IR 생성기의 작성
- IR 레벨에서의 최적화

6. 백엔드
- 백엔드 코드 구조의 학습
- 백엔드 라이브러리의 이해
- LLVM 백엔드를 위한 TableGen의 사용 방법에 대한 학습
- 명령어 선택 단계의 이해
- 스케줄러
- 머신 명령어
- 레지스터 할당
- 프롤로그와 에필로그
- 머신 코드 프레임워크의 이해
- 자신의 머신 패스 작성

7. Just-In-Time 컴파일러
- LLVM JIT 엔진 기본기 익히기
- llvm::JIT 프레임워크에 대한 소개
- llvm::MCJIT 프레임워크에 대한 소개
- LLVM JIT 컴파일 툴의 사용
- 다른 리소스

8. 크로스 플랫폼 컴파일
- GCC LLVM의 비교
- 타겟 트리플의 이해
- 툴체인의 준비
- Clang 커맨드 라인 인수를 사용한 크로스 컴파일
- Clang 크로스 컴파일러의 생성
- 자신만의 Clang 기반 크로스 컴파일러의 구축과 설치
- 테스트
- 추가 리소스

9. Clang 정적 분석기
- 정적 분석기의 역할에 대한 이해
- 전통적인 경고와 Clang 정적 분석기의 비교
- 정적 분석기의 테스트
- 자신의 체커를 사용한 정적 분석기의 확장
- 추가 리소스

10. LibTooling를 사용한 Clang Tools
- 컴파일 커맨드 데이터베이스의 생성
- clang-tidy
- 리팩토링 툴
- 자신의 툴 작성
- 콜백 작성하기
- 추가리소스


출판사 리뷰


이 책은 처음 사용을 위해
LLVM 라이브러리, 툴과 외부 프로젝트에 대한 구성 방법, 구축 방법, 그리고 설치 방법을 보여준다. 다음으로 LLVM 디자인에 대해 소개하고 프론트엔드, IR, 백엔드, JIT 엔진, 크로스 컴파일 기능 그리고 플러그인 인터페이스와 같은 각각의 LLVM 컴파일러 단계를 통해 실제 컴파일러 동작 방법에 대해서도 소개한다. 다양한 예제와 소스 코드 조작들을 통해 LLVM 컴파일러 개발 환경에 대해 부드러우면서도 탄탄한 기반을 제공한다.

이 책의 대상 독자

이 책은
LLVM 프레임워크를 배우고 싶은 사람들, 컴퓨터 사이언스 관련 학생 및 컴파일러 엔지니어를 대상으로 한다. C++에 대한 배경 지식이 필요하며, 필수는 아니지만 적어도 약간의 컴파일러 이론에 대해서는 알고 있는 것이 좋다. LLVM에 대한 실질적인 소개를 제공하고 복잡한 시나리오를 피하고 있기 때문에 초보자든 컴파일러 전문가든 이 기술에 대해 흥미만 가지고 있다면 분명 여러분에게 적합할 것이다.

신고
Trackback 0 | Comment 0

퍼블릭's Blog is powered by Daum & tistory