舉報(bào)

會(huì)員
深入理解LLVM:代碼生成
最新章節(jié):
封底
全書分為3篇。第1篇介紹編譯器基礎(chǔ)知識(shí),包括中間表示,重點(diǎn)介紹SSA、數(shù)據(jù)流分析、支配、循環(huán)等知識(shí),此外還介紹了LLVM的后端描述語(yǔ)言TableGen。第二篇剖析分LLVM代碼生成,其中對(duì)代碼生成的每一步驟都有提及,著重介紹指令選擇、指令調(diào)度、寄存器分配和編譯優(yōu)化。同時(shí)還以BPF后端為例總結(jié)了如何基于LLVM開發(fā)一款新后端的編譯器。第三篇附錄主要總結(jié)了LLVM代碼生成過(guò)程中使用的IR、BPF指令集以及如何在Linux運(yùn)行BPF應(yīng)用,Pass和PassManager的運(yùn)行機(jī)制等知識(shí)。通過(guò)閱讀本書,讀者理解和掌握LLVM代碼生成過(guò)程,可以根據(jù)本書指導(dǎo)為基于LLVM開發(fā)一款新后端的編譯器。同時(shí)本書還介紹了各種編譯過(guò)程中使用到的算法,讀者可以根據(jù)場(chǎng)景對(duì)算法進(jìn)行增強(qiáng)從而達(dá)到性能優(yōu)化目的。
目錄(109章)
倒序
- 封面
- 版權(quán)信息
- 內(nèi)容簡(jiǎn)介
- 前言
- 第一部分 基礎(chǔ)知識(shí)
- 第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ǔ)知識(shí)
- 2.1 IR分類
- 2.2 CFG的基本塊與構(gòu)建
- 2.3 靜態(tài)單賦值
- 2.4 本章小結(jié)
- 第3章 數(shù)據(jù)流分析基礎(chǔ)知識(shí)
- 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)基本知識(shí)
- 5.1 自然循環(huán)
- 5.2 LLVM的循環(huán)實(shí)現(xiàn)
- 5.3 本章小結(jié)
- 第6章 TableGen介紹
- 6.1 目標(biāo)描述語(yǔ)言
- 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種算法對(duì)比
- 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ī)器碼生成過(guò)程
- 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對(duì)Pass的管理
- C.3 New PassManager
- 作者簡(jiǎn)介
- 封底 更新時(shí)間:2024-12-18 16:45:17
推薦閱讀
- The Android Game Developer's Handbook
- TypeScript Blueprints
- Programming ArcGIS 10.1 with Python Cookbook
- 精通API架構(gòu):設(shè)計(jì)、運(yùn)維與演進(jìn)
- Java Web開發(fā)技術(shù)教程
- Python漫游數(shù)學(xué)王國(guó):高等數(shù)學(xué)、線性代數(shù)、數(shù)理統(tǒng)計(jì)及運(yùn)籌學(xué)
- TradeStation交易應(yīng)用實(shí)踐:量化方法構(gòu)建贏家策略(原書第2版)
- Android開發(fā)案例教程與項(xiàng)目實(shí)戰(zhàn)(在線實(shí)驗(yàn)+在線自測(cè))
- Teaching with Google Classroom
- 小型編譯器設(shè)計(jì)實(shí)踐
- 深入淺出Python數(shù)據(jù)分析
- JavaScript悟道
- Greenplum構(gòu)建實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)實(shí)踐
- 人人都能開發(fā)RPA機(jī)器人:UiPath從入門到實(shí)戰(zhàn)
- INSTANT JQuery Flot Visual Data Analysis
- Selenium WebDriver Practical Guide
- Joomla!Search Engine Optimization
- Illustrator CS6中文版應(yīng)用教程(第二版)
- HTML5+jQuery Mobile移動(dòng)應(yīng)用開發(fā)
- 陪孩子像搭積木一樣學(xué)編程:Python真好玩+Scratch趣味編程(全2冊(cè))
- Mastering Microsoft Dynamics AX 2012 R3 Programming
- SQL Server 2014從入門到精通
- Lua Quick Start Guide
- PHP Reactive Programming
- Mastering the C++17 STL
- 零基礎(chǔ)學(xué)ASP.NET 3.5
- Python核心編程從入門到開發(fā)實(shí)戰(zhàn)
- Selenium自動(dòng)化測(cè)試之道
- Python機(jī)器學(xué)習(xí)與可視化分析實(shí)戰(zhàn)
- Cocos2d-x學(xué)習(xí)筆記:完全掌握J(rèn)S API與游戲項(xiàng)目開發(fā) (未來(lái)書庫(kù),觸控未來(lái)官方教材)