舉報

會員
深入理解LLVM:代碼生成
最新章節:
封底
全書分為3篇。第1篇介紹編譯器基礎知識,包括中間表示,重點介紹SSA、數據流分析、支配、循環等知識,此外還介紹了LLVM的后端描述語言TableGen。第二篇剖析分LLVM代碼生成,其中對代碼生成的每一步驟都有提及,著重介紹指令選擇、指令調度、寄存器分配和編譯優化。同時還以BPF后端為例總結了如何基于LLVM開發一款新后端的編譯器。第三篇附錄主要總結了LLVM代碼生成過程中使用的IR、BPF指令集以及如何在Linux運行BPF應用,Pass和PassManager的運行機制等知識。通過閱讀本書,讀者理解和掌握LLVM代碼生成過程,可以根據本書指導為基于LLVM開發一款新后端的編譯器。同時本書還介紹了各種編譯過程中使用到的算法,讀者可以根據場景對算法進行增強從而達到性能優化目的。
目錄(109章)
倒序
- 封面
- 版權信息
- 內容簡介
- 前言
- 第一部分 基礎知識
- 第1章 緒論
- 1.1 LLVM設計思路分析
- 1.2 LLVM主要子項目
- 1.3 LLVM構建與調試
- 1.4 LLVM在線工具
- 1.5 本章小結
- 第2章 IR基礎知識
- 2.1 IR分類
- 2.2 CFG的基本塊與構建
- 2.3 靜態單賦值
- 2.4 本章小結
- 第3章 數據流分析基礎知識
- 3.1 半格、格與不動點
- 3.2 數據流分析原理及描述
- 3.3 數據流方程示例
- 3.4 擴展閱讀:數據流的遍歷性能分析
- 3.5 本章小結
- 第4章 支配分析
- 4.1 支配和逆支配
- 4.2 支配樹和支配邊界的實現
- 4.3 擴展閱讀:支配樹相關小課堂
- 4.4 本章小結
- 第5章 循環基本知識
- 5.1 自然循環
- 5.2 LLVM的循環實現
- 5.3 本章小結
- 第6章 TableGen介紹
- 6.1 目標描述語言
- 6.2 TableGen工具鏈
- 6.3 擴展閱讀:如何在TD文件中定義匹配
- 6.4 本章小結
- 第二部分 代碼生成
- 第7章 指令選擇
- 7.1 指令選擇的處理流程
- 7.2 SelectionDAGISel算法分析
- 7.3 快速指令選擇算法分析
- 7.4 全局指令選擇算法原理與實現
- 7.5 本章小結
- 第8章 指令調度
- 8.1 LLVM指令調度
- 8.2 Linearize調度器
- 8.3 Fast調度器
- 8.4 BURR List調度器
- 8.5 Source List調度器
- 8.6 Hybrid List調度器
- 8.7 Pre-RA-MISched調度器
- 8.8 Post-RA-TDList調度器
- 8.9 Post-RA-MISched調度器
- 8.10 循環調度
- 8.11 擴展閱讀:調度算法的影響因素
- 8.12 本章小結
- 第9章 基于SSA形式的編譯優化
- 9.1 前期尾代碼重復
- 9.2 Phi優化
- 9.3 棧著色
- 9.4 棧槽分配
- 9.5 死指令消除
- 9.6 IPL優化之If-Conversion
- 9.7 循環不變量外提
- 9.8 公共子表達式消除
- 9.9 代碼下沉
- 9.10 窺孔優化
- 9.11 本章小結
- 第10章 寄存器分配
- 10.1 寄存器分配流程解析
- 10.2 寄存器分配涉及的Pass
- 10.3 Fast算法實現
- 10.4 Basic算法實現
- 10.5 Greedy算法實現
- 10.6 PBQP算法實現
- 10.7 擴展閱讀:圖著色分配
- 10.8 4種算法對比
- 10.9 本章小結
- 第11章 函數棧幀生成和非SSA形式的編譯優化
- 11.1 函數棧幀生成以及相關優化
- 11.2 MIR優化
- 11.3 MIR指令變換和調度
- 11.4 MIR信息收集及布局優化
- 11.5 擴展閱讀:后綴樹構造和應用
- 11.6 本章小結
- 第12章 生成機器碼
- 12.1 MC
- 12.2 機器碼生成過程
- 12.3 本章小結
- 第13章 添加一個新后端
- 13.1 適配新后端的各個階段
- 13.2 添加新后端所需要的適配
- 13.3 本章小結
- 附錄
- 附錄A LLVM的中間表示
- A.1 狹義LLVM IR介紹
- A.2 指令選擇DAG介紹
- A.3 MIR介紹
- A.4 MC介紹
- A.5 GMIR介紹
- 附錄B BPF介紹
- B.1 eBPF基礎
- B.2 Linux如何運行eBPF
- 附錄C Pass的分類與管理
- C.1 LegacyPassManage中的Pass
- C.2 LegacyPassManager對Pass的管理
- C.3 New PassManager
- 作者簡介
- 封底 更新時間:2024-12-18 16:45:17
推薦閱讀
- ASP.NET Core:Cloud-ready,Enterprise Web Application Development
- Advanced Machine Learning with Python
- R語言數據可視化之美:專業圖表繪制指南
- Learning ASP.NET Core 2.0
- The React Workshop
- 數據結構與算法JavaScript描述
- Data Analysis with IBM SPSS Statistics
- Julia Cookbook
- 深度強化學習算法與實踐:基于PyTorch的實現
- 人人都懂設計模式:從生活中領悟設計模式(Python實現)
- Test-Driven Machine Learning
- 零基礎學C語言第2版
- Machine Learning for Developers
- 零基礎學C語言(升級版)
- 虛擬現實建模與編程(SketchUp+OSG開發技術)
- 深入實踐C++模板編程
- Windows 10 for Enterprise Administrators
- Swift從入門到精通 (移動開發叢書)
- Spring Microservices
- Performance Testing with JMeter 3(Third Edition)
- Microsoft Hyper-V PowerShell Automation
- 大學計算機應用基礎教程(第三版)
- Arduino for Secret Agents
- Azure for Architects
- 并行算法設計與性能優化
- Java寶典
- Python極客項目編程(第2版)
- Learning Python Testing
- MySQL數據庫應用項目教程
- 使用Hibernate框架輕松連接數據庫(藍橋杯軟件大賽培訓教材-Java方向)