File tree 4 files changed +66
-3
lines changed
4 files changed +66
-3
lines changed Original file line number Diff line number Diff line change 50
50
llvm \
51
51
x86asm \
52
52
plaintext \
53
- shell
53
+ shell \
54
+ rust
54
55
working-directory : highlight.js
55
56
- name : Prepare theme
56
57
run : |
Original file line number Diff line number Diff line change 1
1
.DS_Store
2
2
book
3
+ highlight.js
Original file line number Diff line number Diff line change
1
+ # 2.0.0版本更新(2023-06-28)
2
+
3
+ * 将所有基于macOS的代码都迁移到了Linux上
4
+ * 将LLVM版本更新至16
5
+ * 将所有的LLVM IR指针都转写为opaque pointers
6
+ * 更改了章节布局
7
+
8
+ * 将数据表示一章分为了数据区与符号表、寄存器和栈、数据的使用三个子章节
9
+ * 将控制语句和函数合并为控制流大章的两个子章节
10
+ * 删除了异常处理一章
11
+ * 增加了内置函数、属性和元数据一章
12
+ * 使用MDBook作为文档构建工具,并将文档托管在了GitHub Pages上
13
+ * 增加、修正了更多细节
Original file line number Diff line number Diff line change 2
2
3
3
本仓库是我写的LLVM IR入门指南。
4
4
5
- 推荐前往< https://Evian-Zhang.github.io/llvm-ir-tutorial > 阅读以获得最佳排版及语法高亮体验。PDF版本下载请点击前述网页的右上角。本教程中涉及的大部分代码也都在本GitHub仓库中 。
5
+ 推荐前往< https://Evian-Zhang.github.io/llvm-ir-tutorial > 阅读以获得最佳排版及语法高亮体验。PDF版本下载请点击前述网页的右上角。本教程中涉及的大部分代码也都在本GitHub仓库 [ Evian-Zhang/llvm-ir-tutorial ] ( https://github.com/Evian-Zhang/llvm-ir-tutorial ) 中 。
6
6
7
7
LLVM是当下最通用的编译器后端之一,无论是想自己动手制作一个编译器,还是为主流的编程语言增加功能,又或者是做软件的静态分析,都离不开LLVM。LLVM IR是LLVM架构中一个重要的组成成分,编译器前端将抽象语法树转变为LLVM IR,而编译器后端则根据LLVM IR进行优化,生成可执行程序。但是,目前对LLVM IR的中文介绍少之又少。因此,我就写了这样的一系列文章,介绍了LLVM的架构,并且从LLVM IR的层面,让大家系统地了解LLVM。
8
8
9
- 最近(2023年6月),这个GitHub仓库的star数即将达到一千。因此,我打算基于现有的脉络,大范围更新现有的文章,推出LLVM IR入门指南2.0版。我这次更新的原因主要有以下几点:
9
+ 最近(2023年6月),这个GitHub仓库的star数即将达到一千。因此,我打算基于现有的脉络,大范围更新现有的文章,推出LLVM IR入门指南2.0版(如需查看1.0版,请移步 [ v1分支 ] ( https://github.com/Evian-Zhang/llvm-ir-tutorial/tree/v1 ) ) 。我这次更新的原因主要有以下几点:
10
10
11
11
* LLVM版本更新
12
12
@@ -54,6 +54,54 @@ LLVM是当下最通用的编译器后端之一,无论是想自己动手制作
54
54
55
55
C语言采用Clang 16编译器。LLVM采用LLVM 16版本。
56
56
57
+ ## 本地生成可阅读版本
58
+
59
+ 本系列文章可以在GitHub Pages < https://Evian-Zhang.github.io/llvm-ir-tutorial > 上阅读并生成PDF。如果想在本地离线阅读,可以按照如下步骤生成可阅读版本。
60
+
61
+ ### 1. 克隆本仓库
62
+
63
+ ``` shell
64
+ git clone https://github.com/Evian-Zhang/llvm-ir-tutorial && cd llvm-ir-tutorial
65
+ ```
66
+
67
+ ### 2. 准备语法高亮文件
68
+
69
+ 由于MDBook自带的highlightjs并不支持本书的所有语法高亮,所以需要按照其官方文档中[ Custom theme] ( https://rust-lang.github.io/mdBook/format/theme/syntax-highlighting.html#custom-theme ) 的步骤准备自定义的语法高亮文件:
70
+
71
+ ``` shell
72
+ git clone https://github.com/highlightjs/highlight.js && cd highlight.js
73
+ npm install
74
+ node tools/build.js \
75
+ bash \
76
+ c \
77
+ llvm \
78
+ x86asm \
79
+ plaintext \
80
+ shell \
81
+ rust
82
+ cd ..
83
+ mkdir -p theme
84
+ cp highlight.js/build/highlight.min.js theme/highlight.js
85
+ ```
86
+
87
+ ### 3. 使用MDBook生成最终文档
88
+
89
+ 使用MDBook,其可通过` cargo install mdbook ` 进行安装。
90
+
91
+ ``` shell
92
+ mdbook build
93
+ ```
94
+
95
+ 生成的文档将位于` book/ ` 目录下。
96
+
97
+ 同时,也可以使用
98
+
99
+ ``` shell
100
+ mdbook serve
101
+ ```
102
+
103
+ 在本地启动一个服务器,从而可以更方便地在浏览器中阅读。
104
+
57
105
#### License
58
106
59
107
<sup >
You can’t perform that action at this time.
0 commit comments