日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

llvm编译器实战教程第二版_LLVM编译器实战教程

發布時間:2024/9/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 llvm编译器实战教程第二版_LLVM编译器实战教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

出版者的話

譯者序

前言

關于作者

關于審稿人

第1章 構建和安裝LLVM 1

1.1 了解LLVM版本 1

1.2 獲取預構建包 2

1.2.1 獲取官方預構建二進制文件 2

1.2.2 使用軟件包管理器 3

1.3 從源代碼構建 4

1.3.1 系統要求 4

1.3.2 獲取源代碼 4

1.3.3 構建和安裝LLVM 5

出版者的話

譯者序

前言

關于作者

關于審稿人

第1章 構建和安裝LLVM 1

1.1 了解LLVM版本 1

1.2 獲取預構建包 2

1.2.1 獲取官方預構建二進制文件 2

1.2.2 使用軟件包管理器 3

1.3 從源代碼構建 4

1.3.1 系統要求 4

1.3.2 獲取源代碼 4

1.3.3 構建和安裝LLVM 5

1.3.4 Windows和Microsoft Visual Studio 10

1.3.5 Mac OS X和Xcode 12

1.4 總結 14

第2章 外部項目 15

2.1 Clang外部項目介紹 15

2.1.1 構建和安裝Clang外部工具 16

2.1.2 理解Compiler-RT 17

2.1.3 實驗Compiler-RT 17

2.2 使用DragonEgg插件 18

2.2.1 構建DragonEgg 19

2.2.2 使用DragonEgg和LLVM工具了解編譯流程 19

2.2.3 理解LLVM測試套件 20

2.2.4 使用LLDB 21

2.2.5 libc 標準庫介紹 23

2.3 總結 25

第3章 工具和設計 26

3.1 LLVM的基本設計原理及其歷史 26

3.2 理解目前的LLVM 27

3.3 與編譯器驅動程序交互 29

3.4 使用獨立工具 30

3.5 深入LLVM內部設計 33

3.5.1 了解LLVM的基本庫 33

3.5.2 介紹LLVM的C 慣例 34

3.5.3 演示可插拔的流程接口 37

3.6 編寫你的第一個LLVM項目 38

3.6.1 編寫Makefile 38

3.6.2 編寫代碼 40

3.7 關于LLVM源代碼的一般建議 41

3.7.1 將代碼理解為文檔 42

3.7.2 請求社區的幫助 42

3.7.3 應對更新:使用SVN日志作為文檔 42

3.7.4 結束語 44

3.8 總結 44

第4章 前端 45

4.1 Clang簡介 45

4.1.1 前端操作 46

4.1.2 庫 47

4.1.3 理解Clang診斷 49

4.2 Clang前端階段介紹 52

4.2.1 詞法分析 52

4.2.2 語法分析 58

4.2.3 語義分析 63

4.2.4 生成LLVM IR代碼 65

4.3 完整的例子 65

4.4 總結 68

第5章 LLVM中間表示 69

5.1 概述 69

5.2 操作IR格式的基本工具示例 71

5.3 LLVM IR語法介紹 71

5.4 編寫自定義的LLVM IR生成器 76

5.4.1 構建和運行IR生成器 79

5.4.2 使用C 后端編寫代碼來生成IR構造 80

5.5 在IR層執行優化 80

5.5.1 編譯時優化和鏈接時優化 80

5.5.2 發現最佳編譯器流程 82

5.5.3 流程間的依賴關系 83

5.5.4 了解流程API 85

5.5.5 自定義流程 85

5.6 總結 89

第6章 后端 90

6.1 概述 90

6.2 后端代碼結構介紹 92

6.3 后端庫介紹 93

6.4 如何使用TableGen實現LLVM后端 94

6.4.1 TableGen語言 95

6.4.2 代碼生成器.td文件介紹 96

6.5 指令選擇階段介紹 100

6.5.1 SelectionDAG類 100

6.5.2 降級 102

6.5.3 DAG合并以及合法化 103

6.5.4 DAG到DAG指令選擇 104

6.5.5 指令選擇過程可視化 107

6.5.6 快速指令選擇 107

6.6 調度器 107

6.6.1 指令執行進程表 108

6.6.2 競爭檢測 109

6.6.3 調度單元 109

6.7 機器指令 109

6.8 寄存器分配 110

6.8.1 寄存器合并器 111

6.8.2 虛擬寄存器重寫 114

6.8.3 編譯目標的信息 115

6.9 前序代碼和結束代碼 116

6.10  機器代碼框架介紹 116

6.10.1  MC指令 116

6.10.2  代碼輸出 117

6.11  自定義機器流程 119

6.12 總結 121

第7章 即時編譯器 122

7.1 LLVM JIT引擎的基礎知識介紹 122

7.1.1 介紹執行引擎 123

7.1.2 內存管理 124

7.2 llvm::JIT框架介紹 124

7.2.1 將二進制大對象寫入內存 125

7.2.2 使用JITMemoryManager 125

7.2.3 目標代碼輸出器 125

7.2.4 目標信息 127

7.2.5 學習如何使用JIT類 127

7.3 llvm::MCJIT框架介紹 131

7.3.1 MCJIT引擎 131

7.3.2 MCJIT中模塊編譯過程 132

7.3.3 使用MCJIT引擎 135

7.4 使用LLVM JIT編譯工具 137

7.4.1 使用lli工具 137

7.4.2 使用llvm-rtdyld工具 138

7.5 其他資源 139

7.6 總結 139

第8章 跨平臺編譯 140

8.1 GCC和LLVM對比 140

8.2 目標三元組介紹 141

8.3 準備自己的工具鏈 142

8.3.1 標準C/C 庫 143

8.3.2 運行時庫 143

8.3.3 匯編器和鏈接器 144

8.3.4 Clang前端 144

8.4 用Clang命令行參數進行交叉編譯 145

8.4.1 針對目標的驅動程序選項 145

8.4.2 依賴包 145

8.4.3 交叉編譯 146

8.4.4 更改系統根目錄 148

8.5 生成Clang交叉編譯器 149

8.5.1 配置選項 149

8.5.2 構建和安裝基于Clang的交叉編譯器 149

8.5.3 其他構建方法 150

8.6 測試 151

8.6.1 開發板 151

8.6.2 模擬器 151

8.7 其他資源 152

8.8 總結 152

第9章 Clang靜態分析器 153

9.1 靜態分析器的作用 153

9.1.1 傳統警告信息和Clang靜態分析器比較 153

9.1.2 符號執行引擎的高效性 156

9.2 測試靜態分析器 158

9.2.1 使用驅動程序與使用編譯器 158

9.2.2 了解可用的檢查器 158

9.2.3 在Xcode IDE中使用靜態分析器 160

9.2.4 生成HTML格式的圖形

9.2.5 處理大型項目 161

9.3 使用自定義的檢查器擴展靜態分析器 164

9.3.1 熟悉項目架構 164

9.3.2 自定義檢查器 165

9.4 其他資源 173

9.5 總結 174

第10章 基于LibTooling的Clang工具 175

10.1 生成編譯命令數據庫 175

10.2 clang-tidy工具 176

10.3 代碼重構工具 178

10.3.1 Clang Modernizer(代碼轉換器) 178

10.3.2 Clang Apply Replacements(替換執行器) 178

10.3.3 ClangFormat (格式化工具) 180

10.3.4 Modularize(模塊化工具) 181

10.3.5 Module Map Checker(模塊映射檢查器) 187

10.3.6 PPTrace(追蹤工具) 187

10.3.7 Clang Query(查詢工具) 189

10.3.8 Clang Check(檢查工具) 190

10.3.9 remove-cstr-calls(調用移除工具) 190

10.4 編寫自己的工具 190

10.4.1 問題定義:編寫一個C 代碼重構工具 191

10.4.2 配置源代碼位置 191

10.4.3 剖析工具的模板代碼 192

10.4.4 使用AST匹配器 195

10.4.5 編寫回調函數 199

10.4.6 測試編寫的重構工具 200

10.5 其他資源 201

10.6 總結 201

索引 202

總結

以上是生活随笔為你收集整理的llvm编译器实战教程第二版_LLVM编译器实战教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。