購物比價找書網找車網
FindBook  
 有 1 項符合

深入理解LLVM:代碼生成

的圖書
深入理解LLVM:代碼生成 深入理解LLVM:代碼生成

作者:彭成寒 
出版社:機械工業出版社
出版日期:2024-09-01
語言:簡體中文   規格:平裝 / 418頁 / 19 x 26 x 2.09 cm / 普通級/ 1-1
圖書選購
型式價格供應商所屬目錄
 
$ 569
博客來 博客來
計算機概論
圖書介紹 - 資料來源:博客來   評分:
圖書名稱:深入理解LLVM:代碼生成

內容簡介

全書分為3篇。第1篇介紹編譯器基礎知識,包括中間表示,重點介紹SSA、數據流分析、支配、循環等知識,此外還介紹了LLVM的後端描述語言TableGen。第二篇剖析分LLVM代碼生成,其中對代碼生成的每一步驟都有提及,著重介紹指令選擇、指令調度、寄存器分配和編譯優化。同時還以BPF後端為例總結了如何基於LLVM開發一款新後端的編譯器。第三篇附錄主要總結了LLVM代碼生成過程中使用的IR、BPF指令集以及如何在Linux運行BPF應用,Pass和PassManager的運行機制等知識。
 
通過閱讀本書,讀者理解和掌握LLVM代碼生成過程,可以根據本書指導為基於LLVM開發一款新後端的編譯器。同時本書還介紹了各種編譯過程中使用到的算法,讀者可以根據場景對算法進行增強從而達到性能優化目的。
 

作者介紹

彭成寒:AI編譯器與虛擬機技術專家,目前主要專注於LLVM、MLIR相關的AI編譯器研究,並在JVM、V8和WebAssembly等虛擬機技術方面有著豐富的研發經驗。他深耕IT領域近20年,曾涉足應用軟件和大數據開發等多個領域,並著有《JVM G1源碼分析和調優》《新一代垃圾回收器ZGC設計與實現》《深入探索JVM垃圾回收:ARM服務器垃圾回收的挑戰和優化》等重要領域專著。
李靈:畢業于上海交通大學,擁有6年編譯器和虛擬機相關的研發工作經驗,深度參與了多項LLVM編譯器及V8、WebAssembly虛擬機等開源項目的研發工作,目前正在從事AI編譯器研發工作。

戴賢澤:畢業于南京理工大學,擁有7年編譯器和虛擬機相關工作經驗,深入參與了方舟編譯器及V8、WebAssembly虛擬機等開源項目的研發工作,目前正在從事編譯器和虛擬機的設計與研發工作。

王志磊:畢業于浙江大學,擁有6年編譯器和虛擬機相關的研發工作經驗,參與了多項編譯器及虛擬機的開發項目,並為llvm-bolt、V8、WebAssembly等開源項目貢獻代碼,目前專注於虛擬機相關的研發,精通AOT和JIT技術。

俞佳嘉:南京大學碩士研究生,現任華為編譯器與編程語言實驗室鴻蒙開發者生態構建技術首席專家。他擁有10餘年的豐富工作經驗,在Intel、Microsoft、華為等世界知名公司從事過編譯器、虛擬機、指令翻譯等技術的相關研發工作,並深入參與了Intel Houdini、華為方舟編譯器等產品的核心研發工作。
 

目錄

前言
第一部分 基礎知識
第1章 緒論2
1.1 LLVM設計思路分析3
1.2 LLVM主要子項目4
1.3 LLVM構建與調試5
1.4 LLVM在線工具7
1.5 本章小結9
第2章 IR基礎知識10
2.1 IR分類11
2.1.1 樹IR11
2.1.2 線性IR11
2.1.3 圖IR12
2.2 CFG的基本塊與構建14
2.2.1 基本塊14
2.2.2 構建CFG15
2.3 靜態單賦值15
2.3.1 基本概念16
2.3.2 SSA構造19
2.3.3 SSA析構19
2.3.4 SSA分類28
2.3.5 基本塊參數和Phi節點29
2.4 本章小結30
第3章 數據流分析基礎知識31
3.1 半格、格與不動點31
3.1.1 半格和偏序集31
3.1.2 格33
3.1.3 不動點34
3.2 數據流分析原理及描述35
3.2.1 數據流方程形式化描述36
3.2.2 數據流分析的理論描述40
3.3 數據流方程示例43
3.3.1 活躍變量43
3.3.2 到達定值45
3.3.3 常量傳播46
3.4 擴展閱讀:數據流的遍歷性能分析49
3.5 本章小結50
第4章 支配分析51
4.1 支配和逆支配51
4.1.1 支配和逆支配相關定義51
4.1.2 支配和逆支配含義解析53
4.2 支配樹和支配邊界的實現55
4.2.1 半支配節點及相關概念56
4.2.2 LT算法和Semi-NCA的差異57
4.2.3 支配邊界的實現58
4.3 擴展閱讀:支配樹相關小課堂58
4.3.1 支配樹構造算法及比較59
4.3.2 如何快速判斷任意兩個節點的支配關係60
4.4 本章小結62
第5章 循環基本知識63
5.1 自然循環64
5.2 LLVM的循環實現65
5.2.1 循環識別66
5.2.2 循環規範化67
5.3 本章小結71
第6章 TableGen介紹72
6.1 目標描述語言72
6.1.1 詞法72
6.1.2 語法74
6.2 TableGen工具鏈77
6.2.1 從TD定義到記錄78
6.2.2 從記錄到C 代碼81
6.3 擴展閱讀:如何在TD文件中定義匹配83
6.3.1 隱式定義匹配模板83
6.3.2 複雜匹配模板84
6.3.3 匹配規則支撐類86
6.4 本章小結86

第二部分 代碼生成
第7章 指令選擇91
7.1 指令選擇的處理流程92
7.2 SelectionDAGISel算法分析94
7.2.1 SDNode分類96
7.2.2 LLVM IR到SDNode的轉換98
7.2.3 SDNode合法化108
7.2.4 機器指令選擇117
7.2.5 從DAG輸出MIR123
7.3 快速指令選擇算法分析126
7.4 全域指令選擇算法原理與實現128
7.4.1 全域指令選擇的階段128
7.4.2 GMIR生成129
7.4.3 指令合法化133
7.4.4 寄存器類型選擇137
7.4.5 機器指令選擇141
7.4.6 合併優化143
7.5 本章小結146
第8章 指令調度147
8.1 LLVM指令調度149
8.1.1 指令調度算法150
8.1.2 拓撲排序算法151
8.2 Linearize調度器152
8.2.1 構造依賴圖153
8.2.2 對依賴圖進行調度153
8.3 Fast調度器156
8.3.1 Fast調度器實現157
8.3.2 物理寄存器依賴場景的處理158
8.3.3 示例分析162
8.4 BURR List調度器166
8.4.1 影響指令調度的關鍵因素166
8.4.2 指令優先級計算方法168
8.4.3 示例分析170
8.5 Source List調度器173
8.6 Hybrid List調度器174
8.7 Pre-RA-MISched調度器174
8.7.1 Pre-RA-MISched調度器實現174
8.7.2 調度區域的劃分175
8.7.3 影響Pre-RA-MISched調度器的關鍵因素175
8.7.4 MIR指令時延的計算175
8.7.5 寄存器壓力的計算177
8.7.6 示例分析181
8.8 Post-RA-TDList調度器186
8.8.1 Post-RA-TDList調度器實現186
8.8.2 示例分析186
8.9 Post-RA-MISched調度器189
8.10 循環調度190
8.10.1 循環調度算法實現190
8.10.2 示例分析194
8.11 擴展閱讀:調度算法的影響因素200
8.12 本章小結203
第9章 基於SSA形式的編譯優化204
9.1 前期尾代碼重複205
9.1.1 尾代碼重複原理205
9.1.2 尾代碼收益判斷207
9.1.3 執行尾代碼重複優化209
9.2 Phi優化212
9.3 棧著色213
9.4 棧槽分配217
9.5 死指令消除218
9.6 IPL優化之If-Conversion219
9.7 循環不變量外提224
9.8 公共子表達式消除224
9.9 代碼下沉227
9.10 窺孔優化228
9.11 本章小結231
第10章 寄存器分配232
10.1 寄存器分配流程解析233
10.1.1 Fast算法執行流程233
10.1.2 Basic算法執行流程233
10.2 寄存器分配涉及的Pass241
10.2.1 死亡和未定義子寄存器檢測241
10.2.2 隱式定義指令處理243
10.2.3 不可達MBB消除243
10.2.4 活躍變量分析244
10.2.5 Phi消除246
10.2.6 二地址指令變換249
10.2.7 指令編號255
10.2.8 變量活躍區間分析256
10.2.9 寄存器合併256
10.2.10 MBB的頻率分析259
10.2.11 寄存器分配:直接分配與間接分配265
10.2.12 將虛擬寄存器映射到物理寄存器266
10.2.13 棧槽著色266
10.2.14 複製傳播267
10.2.15 循環不變量外提269
10.3 Fast算法實現269
10.3.1 Fast算法實現思路269
10.3.2 示例分析270
10.4 Basic算法實現276
10.4.1 算法實現思路276
10.4.2 示例分析277
10.5 Greedy算法實現289
10.5.1 Greedy算法實現思路290
10.5.2 算法實現的核心:拆分291
10.5.3 區域拆分之Hopfield網絡詳解293
10.5.4 使用Hopfield網絡求解拆分296
10.5.5 示例分析300
10.6 PBQP算法實現313
10.6.1 PBQP介紹313
10.6.2 寄存器分配和PBQP的關係314
10.6.3 PBQP問題求解314
10.6.4 寄存器分配問題建模示例317
10.6.5 PBQP實現原理以及示例分析318
10.7 擴展閱讀:圖著色分配324
10.8 4種算法對比326
10.9 本章小結329
第11章 函數棧幀生成和非SSA形式的編譯優化330
11.1 函數棧幀生成以及相關優化331
11.1.1 棧幀生成331
11.1.2 代碼下沉332
11.1.3 棧幀範圍收縮335
11.2 MIR優化337
11.2.1 分支折疊337
11.2.2 尾代碼重複347
11.2.3 複製傳播347
11.3 MIR指令變換和調度347
11.4 MIR信息收集及佈局優化348
11.4.1 基本塊佈局優化349
11.4.2 公共代碼提取355
11.4.3 函數冷熱代碼分離359
11.4.4 代碼佈局優化比較363
11.5 擴展閱讀:後綴樹構造和應用365
11.5.1 後綴樹的構造365
11.5.2 後綴樹的應用372
11.6 本章小結372
第12章 生成機器碼373
12.1 MC374
12.2 機器碼生成過程375
12.2.1 彙編代碼生成376
12.2.2 二進制代碼生成378
12.3 本章小結381
第13章 添加一個新後端382
13.1 適配新後端的各個階段382
13.1.1 指令選擇階段的適配383
13.1.2 寄存器分配相關的適配383
13.1.3 插入前言/後序384
13.1.4 機器碼生成相關的適配384
13.2 添加新後端所需要的適配385
13.2.1 定義TD文件386
13.2.2 指令選擇處理386
13.2.3 棧幀處理387
13.2.4 機器碼生成處理388
13.2.5 添加新後端到LLVM框架中388
13.3 本章小結389
附錄
附錄A LLVM的中間表示392
附錄B BPF介紹407
附錄C Pass的分類與管理413
 

詳細資料

  • ISBN:9787111764151
  • 規格:平裝 / 418頁 / 19 x 26 x 2.09 cm / 普通級 / 1-1
  • 出版地:中國
贊助商廣告
 
金石堂 - 今日66折
完全指南 地球編年史全系列(八冊)
作者:撒迦利亞.西琴
出版社:新星球出版
出版日期:2021-08-02
66折: $ 2534 
金石堂 - 今日66折
愛的心關係(有聲書)
作者:許添盛主講
出版社:賽斯文化
出版日期:2017-10-01
66折: $ 792 
金石堂 - 今日66折
百位工程與建築大師套書(二冊):《50位史上最偉大的工程師》、《50位史上最偉大的建築師》
作者:保羅.維爾
出版社:本事出版
出版日期:2022-08-31
66折: $ 923 
金石堂 - 今日66折
當上主管後,難道只能默默崩潰?Facebook產品設計副總打造和諧團隊的領導之路
作者:卓茱莉
出版社:時報文化出版企業股份有限公司
出版日期:2020-05-05
66折: $ 277 
 
博客來 - 暢銷排行榜
躲在超市後門抽菸的兩人 5 (首刷限定版)
出版日期:2025-01-13
$ 187 
博客來 - 暢銷排行榜
別對每件事都有反應【2025限量暢銷特典版】:淡泊一點也無妨,活出快意人生的99個禪練習!
作者:枡野俊明
出版社:悅知文化
出版日期:2024-12-18
$ 260 
Taaze 讀冊生活 - 暢銷排行榜
臺灣漫遊錄
作者:楊双子
出版社:春山出版有限公司
出版日期:2020-04-01
$ 300 
Taaze 讀冊生活 - 暢銷排行榜
別對每件事都有反應【2025限量暢銷特典版】:淡泊一點也無妨,活出快意人生的99個禪練習!
作者:枡野俊明
出版社:悅知文化
出版日期:2024-12-18
$ 260 
 
Taaze 讀冊生活 - 新書排行榜
迷城
作者:沐芷鯉
出版社:今古傳奇(滾石移動)
出版日期:2025-01-17
$ 180 
金石堂 - 新書排行榜
九井諒子塗鴉集 白日夢時光(全)
作者:九井諒子
出版社:青文出版社股份有限公司
出版日期:2025-01-22
$ 435 
博客來 - 新書排行榜
治癒悖論 deeper 下
$ 136 
金石堂 - 新書排行榜
轉生成惡役千金後竟然被毀婚的死腦筋王太子溺愛!?-02
作者:まちねちね
出版社:長鴻出版社股份有限公司
出版日期:2025-02-14
$ 103 
 

©2025 FindBook.com.tw -  購物比價  找書網  找車網  服務條款  隱私權政策