LLVM Cookbook中文版

馬尤爾·潘迪 (Mayur Pandey), 蘇尤葛·撒達 (Suyog Sarda)

  • 出版商: 電子工業出版社
  • 出版日期: 2016-06-01
  • 定價: $450
  • 售價: $450
  • 貴賓價: 9.5$428
  • 語言: 簡體中文
  • 頁數: 293
  • 裝訂: 平裝
  • ISBN: 7121288478
  • ISBN-13: 9787121288470
  • 相關分類: 編譯器

已絕版

買這商品的人也買了...

相關活動主題

20180802 %e6%9c%80%e6%96%b0%e5%88%b0%e8%b2%a8small

商品描述

<內容簡介>

本書以任務驅動的方式,帶領讀者編寫基於LLVM 的編譯器前端、優化器、後端。通過豐富的實例,讀者能夠從中理解LLVM 的架構,以及如何使用LLVM 來編寫自己的編譯器。相比於傳統的介紹編譯技術的書籍,此書更偏向於實戰,因此適合熟悉編譯但對LLVM 比較陌生的人員,也適合正在學習編譯技術並且在尋找實戰機會的人員。

<章節目錄>

前言
第1章LLVM設計與使用
概述
模塊化設計
交叉編譯Clang/LLVM
將C源碼轉換為LLVM彙編碼
將LLVM IR轉換為bitcode
將LLVM bitcode轉換為目標平臺彙編碼
將LLVM bitcode轉回為LLVM彙編碼
轉換LLVM IR
鏈接LLVM bitcode
執行LLVM bitcode
使用C語言前端——C1ang
使用GO語言前端
使用DragonEgg

第2章實現編譯器前端
概述
定義TOY語言
實現詞法分析器
定義抽象語法樹
實現語法分析器
解析簡單的表達式
解析二元表達式
為解析編寫驅動
對TOY語言進行詞法分析和語法分析
為每個AST類定義IR代碼生成方法
為表達式生成IR代碼
為函數生成IR代碼
增加IR優化支持

第3章擴展前端並增加JIT支持
概述
處理條件控制結構—if/then/else結構
生成循環結構
處理自定義二元運算符
處理自定義一元運算符
增加JIT支持

第4章準備優化
概述
多級優化
自定義LLVM Pass
使用opt工具運行自定義Pass
在新的Pass中調用其他Pass
使用Pass管理器註冊Pass
實現一個分析Pass
實現一個別名分析Pass
使用其他分析Pass

第5章實現優化
概述
編寫無用代碼消除Pass
編寫內聯轉換Pass
編寫內存優化Pass
合併LLVM IR
循環的轉換與優化
表達式重組
IR向量化
其他優化Pass

第6章平臺無關代碼生成器
概述
LLVM IR指令的生命週期
使用GraphViz可視化LLVM IR控制流圖
使用TableGen描述目標平臺
定義指令集
添加機器碼描述
實現MachinelnstrBuilder類
實現MachineBasicBlock類
實現MachineFunction類
編寫指令選擇器
合法化SelectionDAG
優化SelectionDAG
基於DAG的指令選擇
基於SelectionDAG的指令調度

第7章機器碼優化
概述
消除機器碼公共子表達式
活動週期分析
寄存器分配
插人頭尾代碼
代碼發射
尾調用優化
兄弟調用優化

第8章實現LLVM後端
概述
定義寄存器和寄存器集合
定義調用約定
定義指令集
實現棧幀lowering
打印指令
選擇指令
增加指令編碼
子平臺支持
多指令lowering
平臺註冊

第9章LLVM項目最佳實踐
概述
LLVM中的異常處理
使用sanitizer
使用LLVM編寫垃圾回收器
將LLVM IR轉換為JavaScript
使用Clang靜態分析器
使用bugpoint
使用LLDB
使用LLVM通用Pass