舉報(bào)

會員
深入理解LLVM:代碼生成
最新章節(jié):
封底
全書分為3篇。第1篇介紹編譯器基礎(chǔ)知識,包括中間表示,重點(diǎn)介紹SSA、數(shù)據(jù)流分析、支配、循環(huán)等知識,此外還介紹了LLVM的后端描述語言TableGen。第二篇剖析分LLVM代碼生成,其中對代碼生成的每一步驟都有提及,著重介紹指令選擇、指令調(diào)度、寄存器分配和編譯優(yōu)化。同時(shí)還以BPF后端為例總結(jié)了如何基于LLVM開發(fā)一款新后端的編譯器。第三篇附錄主要總結(jié)了LLVM代碼生成過程中使用的IR、BPF指令集以及如何在Linux運(yùn)行BPF應(yīng)用,Pass和PassManager的運(yùn)行機(jī)制等知識。通過閱讀本書,讀者理解和掌握LLVM代碼生成過程,可以根據(jù)本書指導(dǎo)為基于LLVM開發(fā)一款新后端的編譯器。同時(shí)本書還介紹了各種編譯過程中使用到的算法,讀者可以根據(jù)場景對算法進(jìn)行增強(qiáng)從而達(dá)到性能優(yōu)化目的。
目錄(109章)
倒序
- 封面
- 版權(quán)信息
- 內(nèi)容簡介
- 前言
- 第一部分 基礎(chǔ)知識
- 第1章 緒論
- 1.1 LLVM設(shè)計(jì)思路分析
- 1.2 LLVM主要子項(xiàng)目
- 1.3 LLVM構(gòu)建與調(diào)試
- 1.4 LLVM在線工具
- 1.5 本章小結(jié)
- 第2章 IR基礎(chǔ)知識
- 2.1 IR分類
- 2.2 CFG的基本塊與構(gòu)建
- 2.3 靜態(tài)單賦值
- 2.4 本章小結(jié)
- 第3章 數(shù)據(jù)流分析基礎(chǔ)知識
- 3.1 半格、格與不動(dòng)點(diǎn)
- 3.2 數(shù)據(jù)流分析原理及描述
- 3.3 數(shù)據(jù)流方程示例
- 3.4 擴(kuò)展閱讀:數(shù)據(jù)流的遍歷性能分析
- 3.5 本章小結(jié)
- 第4章 支配分析
- 4.1 支配和逆支配
- 4.2 支配樹和支配邊界的實(shí)現(xiàn)
- 4.3 擴(kuò)展閱讀:支配樹相關(guān)小課堂
- 4.4 本章小結(jié)
- 第5章 循環(huán)基本知識
- 5.1 自然循環(huán)
- 5.2 LLVM的循環(huán)實(shí)現(xiàn)
- 5.3 本章小結(jié)
- 第6章 TableGen介紹
- 6.1 目標(biāo)描述語言
- 6.2 TableGen工具鏈
- 6.3 擴(kuò)展閱讀:如何在TD文件中定義匹配
- 6.4 本章小結(jié)
- 第二部分 代碼生成
- 第7章 指令選擇
- 7.1 指令選擇的處理流程
- 7.2 SelectionDAGISel算法分析
- 7.3 快速指令選擇算法分析
- 7.4 全局指令選擇算法原理與實(shí)現(xiàn)
- 7.5 本章小結(jié)
- 第8章 指令調(diào)度
- 8.1 LLVM指令調(diào)度
- 8.2 Linearize調(diào)度器
- 8.3 Fast調(diào)度器
- 8.4 BURR List調(diào)度器
- 8.5 Source List調(diào)度器
- 8.6 Hybrid List調(diào)度器
- 8.7 Pre-RA-MISched調(diào)度器
- 8.8 Post-RA-TDList調(diào)度器
- 8.9 Post-RA-MISched調(diào)度器
- 8.10 循環(huán)調(diào)度
- 8.11 擴(kuò)展閱讀:調(diào)度算法的影響因素
- 8.12 本章小結(jié)
- 第9章 基于SSA形式的編譯優(yōu)化
- 9.1 前期尾代碼重復(fù)
- 9.2 Phi優(yōu)化
- 9.3 棧著色
- 9.4 棧槽分配
- 9.5 死指令消除
- 9.6 IPL優(yōu)化之If-Conversion
- 9.7 循環(huán)不變量外提
- 9.8 公共子表達(dá)式消除
- 9.9 代碼下沉
- 9.10 窺孔優(yōu)化
- 9.11 本章小結(jié)
- 第10章 寄存器分配
- 10.1 寄存器分配流程解析
- 10.2 寄存器分配涉及的Pass
- 10.3 Fast算法實(shí)現(xiàn)
- 10.4 Basic算法實(shí)現(xiàn)
- 10.5 Greedy算法實(shí)現(xiàn)
- 10.6 PBQP算法實(shí)現(xiàn)
- 10.7 擴(kuò)展閱讀:圖著色分配
- 10.8 4種算法對比
- 10.9 本章小結(jié)
- 第11章 函數(shù)棧幀生成和非SSA形式的編譯優(yōu)化
- 11.1 函數(shù)棧幀生成以及相關(guān)優(yōu)化
- 11.2 MIR優(yōu)化
- 11.3 MIR指令變換和調(diào)度
- 11.4 MIR信息收集及布局優(yōu)化
- 11.5 擴(kuò)展閱讀:后綴樹構(gòu)造和應(yīng)用
- 11.6 本章小結(jié)
- 第12章 生成機(jī)器碼
- 12.1 MC
- 12.2 機(jī)器碼生成過程
- 12.3 本章小結(jié)
- 第13章 添加一個(gè)新后端
- 13.1 適配新后端的各個(gè)階段
- 13.2 添加新后端所需要的適配
- 13.3 本章小結(jié)
- 附錄
- 附錄A LLVM的中間表示
- A.1 狹義LLVM IR介紹
- A.2 指令選擇DAG介紹
- A.3 MIR介紹
- A.4 MC介紹
- A.5 GMIR介紹
- 附錄B BPF介紹
- B.1 eBPF基礎(chǔ)
- B.2 Linux如何運(yùn)行eBPF
- 附錄C Pass的分類與管理
- C.1 LegacyPassManage中的Pass
- C.2 LegacyPassManager對Pass的管理
- C.3 New PassManager
- 作者簡介
- 封底 更新時(shí)間:2024-12-18 16:45:17
推薦閱讀
- R語言數(shù)據(jù)可視化實(shí)戰(zhàn)
- Spring實(shí)戰(zhàn)(第5版)
- 可解釋機(jī)器學(xué)習(xí):模型、方法與實(shí)踐
- 精通MATLAB(第3版)
- IBM Cognos TM1 Developer's Certification guide
- Struts 2.x權(quán)威指南
- Learning Nessus for Penetration Testing
- Xamarin Cross-Platform Development Cookbook
- Drupal 8 Development Cookbook(Second Edition)
- Data Manipulation with R(Second Edition)
- Java語言程序設(shè)計(jì)實(shí)用教程(第2版)
- SAS編程演義
- Processing開發(fā)實(shí)戰(zhàn)
- 零基礎(chǔ)C語言學(xué)習(xí)筆記
- C# 10核心技術(shù)指南
- Learning IBM Bluemix
- 物聯(lián)網(wǎng)及低功耗藍(lán)牙5.x高級開發(fā)
- Java到Kotlin:代碼重構(gòu)指南
- 零基礎(chǔ)Python學(xué)習(xí)筆記
- Smart Internet of Things Projects
- Xilinx FPGA數(shù)字信號處理設(shè)計(jì):基礎(chǔ)版
- Android Programming for Beginners
- 新印象:中文版Sketch圖標(biāo)與UI界面設(shè)計(jì)實(shí)例教程
- Asynchronous Android
- 跟老齊學(xué)Python:Django實(shí)戰(zhàn)(第2版)
- Unity3D網(wǎng)絡(luò)游戲?qū)崙?zhàn)(第2版)
- Swift 4 Programming Cookbook
- UML 建模、設(shè)計(jì)與分析:從新手到高手
- 移動(dòng)端機(jī)器學(xué)習(xí)實(shí)戰(zhàn)
- Mastering Swift 3