LLVM Cookbook
도서명:LLVM Cookbook
저자/출판사:메이유르,판디,슈오그,사르다/에이콘출판
쪽수:368쪽
출판일:2017-01-13
ISBN:9788960779570
목차
1장. LLVM 설계와 사용법
__소개
__모듈 설계 이해
__Clang/LLVM을 이용한 크로스컴파일링
__C 소스코드를 LLVM 어셈블리로 변환
__IR을 LLVM 비트코드로 변환
__LLVM 비트코드를 타겟 머신 어셈블리로 변환
__LLVM 비트코드를 LLVM 어셈블리로 역변환
__LLVM IR 변환
__LLVM 비트코드 링킹
__LLVM 비트코드 실행
__C 프론트엔드 Clang 사용
__GO 프론트엔드 사용
__드래곤에그 사용
2장. 프론트엔드 작성 단계
__소개
__TOY 언어 정의
__렉서 구현 방법
__추상 구문 트리 정의
__파서 구현
__단순 표현식의 파싱
__이항 표현식의 파싱
__파싱을 위한 드라이버 적용
__TOY 언어 대상 렉서 실행
__각 추상 구문 트리 클래스를 위한 IR 코드 생성 기법 정의
__표현식을 위한 IR코드 생성
__함수를 위한 IR 코드 생성
__IR 코드 최적화 기능 추가
3장. 프론트엔드 확장과 JIT 컴파일 추가
__소개
__조건문 코드 생성: if/then/else
__반복문 코드 생성
__사용자 정의 연산자: 이항 연산자
__사용자 정의 연산자: 단항 연산자
__JIT 컴파일 추가
4장. 최적화 준비
__소개
__최적화의 다양한 레벨
__LLVM 패스 구현
__opt 툴로 구현한 패스 실행
__새로운 패스에서 다른 패스 사용
__패스 매니저에 패스 등록
__분석 패스 구현
__에일리어스 분석 패스 구현
__다른 분석 패스 사용
5장. 최적화 구현
__소개
__죽은 코드 제거 패스
__인라인 변환 패스 작성
__메모리 최적화 패스 작성
__LLVM IR 병합
__반복문 변환과 최적화
__표현식 재배치
__IR 벡터화
__기타 최적화 패스
6장. 타겟 독립적 코드 생성기
__소개
__LLVM IR의 생명주기
__GraphViz를 이용한 LLVM IR 제어 흐름 그래프 시각화
__TableGen을 이용한 타겟 지정
__명령어 집합 정의
__머신 코드 디스크립터 추가
__MachineInstrBuilder 클래스 구현
__MachineBasicBlock 클래스 구현
__MachineFunction 클래스 구현
__명령어 선택자 작성
__SelectionDAG 교정
__SelectionDAG 최적화
__DAG에서 명령어 선택
__SelectionDAG에서 명령어 스케줄링
7장. 머신 코드 최적화
__소개
__머신 코드의 공통부분 표현식 제거
__유효 구간 분석
__레지스터 할당
__프롤로그-에필로그 코드 삽입
__코드 생성
__꼬리 호출 최적화
__형제 호출 최적화
8장. LLVM 백엔드 작성
__소개
__레지스터와 레지스터 집합 정의
__호출 규약 정의
__명령어 집합 정의
__프레임 저수준화 구현
__명령어 출력
__명령어 선택
__명령어 인코딩 추가
__보조 타겟 지원
__다중 명령어로 저수준화
__타겟 등록
9장. 다양한 프로젝트에서의 LLVM 활용
__소개
__LLVM의 예외 처리
__Sanitizer 사용 방법
__LLVM으로 가비지 컬렉터 작성
__LLVM IR을 자바스크립트로 변환
__Clang 정적 분석기의 사용
__bugpoint 사용
__LLDB 사용
__LLVM 유틸리티 패스 사용