제목: 제대로
배우는 LLVM 코어 라이브러리
부제 LLVM 필수 기능 및 고급 툴 개발을 위한 사용법
저자 부르노 카도소 로페즈, 라파엘
오일러
역자 이준수
출간일 2017년 4월 24일
정가 25,000원
페이지 372
판형 크라운판
ISBN 979-11-86697-32-0 (93000)
- 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 툴
- 리팩토링 툴
- 자신의 툴 작성
- 콜백 작성하기
- 추가리소스
출판사 리뷰
실전, 3D 프린팅 활용가이드 (0) | 2017.04.17 |
---|---|
데이터가 돋보이는 Microsoft Power BI (0) | 2017.03.29 |
Go 웹 프로그래밍 (0) | 2017.03.21 |
댓글 영역