Skip to content

Commit 0a467f0

Browse files
author
oxnz
committed
add lexicon of llvm
1 parent 6fbe380 commit 0a467f0

File tree

1 file changed

+230
-0
lines changed

1 file changed

+230
-0
lines changed

llvm-lexicon.md

+230
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,230 @@
1+
#LLVM 词典
2+
##定义
3+
**A**
4+
5+
__ADCE__
6+
7+
Aggressive Dead Code Elimination
8+
积极的死代码消除
9+
10+
__AST__
11+
12+
Abstract Syntax Tree
13+
抽象语法树
14+
15+
由于 Clang 的影响(大多是由于 C,尤其是 C++ 错综复杂的解析和语义分析),典型的 LLVM 社区中的 AST 的定义大概是“输入程序的编译器第一个完整的符号(与文本相反)表示”。因此,一个 “AST” 可能更像一个通用图而不是一棵“树”(考虑一个链表节点的符号表示)。这个工作的定义更接近一些作者所谓的“带注释的抽象语法树”。
16+
17+
使用你最喜欢的编译器书籍和搜索引擎来获取更多信息。
18+
<hr>
19+
**B**
20+
21+
__BB Vectorization__
22+
23+
Basic-Block Vectorization
24+
基本块向量化
25+
26+
__BURS__
27+
28+
Bottom Up Rewriting System — A method of instruction selection for code generation.
29+
30+
自底向上重写系统-一种代码生成中的指令选择方法。一个例子是 [BURG](http://www.program-transformation.org/Transform/BURG) 工具。
31+
<hr>
32+
33+
**C**
34+
35+
__CSE__
36+
37+
Common Subexpression Elimination.
38+
39+
共同子表达式消除。一种移除共同子表达式的优化。例如 `(a+b)*(a+b)` 有两个相同的子表达式: `(a+b)`。这个优化使得只做一次加法然后执行乘法(但是只针对正确且安全的计算)。
40+
<hr>
41+
42+
**D**
43+
44+
__DAG__
45+
46+
Directed Acyclic Graph
47+
48+
有向不循环图
49+
50+
__Derived Pointer__
51+
52+
一个指向对象内部的指针,使得垃圾回收器不能使用此指针进行可达性分析。只要一个 derived 指针存在,对应的对象的指针必须保留在 root 内,否则垃圾回收器可能会释放引用的对象。对于拷贝收集器,derived 指针具有额外的风险使得它们可能在任何安全点处无效化。这个机制被用来对抗对象指针。
53+
54+
__DSA__
55+
56+
数据结构分析
57+
58+
__DSE__
59+
60+
Dead Store Elimination
61+
62+
可不达存储消除
63+
64+
<hr>
65+
66+
**F**
67+
68+
__FCA__
69+
70+
First Class Aggregate
71+
72+
第一类集合
73+
<hr>
74+
75+
**G**
76+
77+
__GC__
78+
79+
垃圾回收。使用可达性分析替代显式的内存管理来回首不再使用的内存。
80+
81+
<hr>
82+
83+
**H**
84+
85+
__Heap__
86+
87+
在垃圾回收中,使用可达性分析管理的内存区域
88+
89+
<hr>
90+
91+
**I**
92+
93+
__IPA__
94+
95+
Inter-Procedural Analysis.
96+
97+
过程间分析。引用到过程、函数和编译单元(模块)之间发生的大量代码分析。
98+
99+
__IPO__
100+
101+
过程间优化。引用到过程、函数和编译单元(模块)之间发生的大量代码优化。
102+
103+
__ISel__
104+
105+
指令选择
106+
107+
<hr>
108+
109+
**L**
110+
111+
__LCSSA__
112+
113+
Loop-Closed Static Single Assignment Form
114+
115+
闭环静态单赋值形式
116+
117+
__LICM__
118+
119+
Loop Invariant Code Motion
120+
121+
循环不变量
122+
123+
124+
__Load-VN__
125+
126+
负荷值编号
127+
128+
__LTO__
129+
130+
链接时优化
131+
<hr>
132+
133+
**M**
134+
135+
__MC__
136+
137+
机器码
138+
139+
<hr>
140+
141+
**O**
142+
143+
__Object Pointer__
144+
145+
指向对象的指针,使得垃圾回收器可以追踪对象内的引用。这个机制用来对抗derived 指针。
146+
<hr>
147+
148+
**P**
149+
150+
__PRE__
151+
152+
Partial Redundancy Elimination
153+
154+
部分冗余消除
155+
156+
<hr>
157+
158+
**R**
159+
160+
__RAUW__
161+
162+
Replace All Uses With. The functions User::replaceUsesOfWith(), Value::replaceAllUsesWith(), and Constant::replaceUsesOfWithOnConstant() implement the replacement of one Value with another by iterating over its def/use chain and fixing up all of the pointers to point to the new value. See also def/use chains.
163+
164+
__Reassociation__
165+
166+
Rearranging associative expressions to promote better redundancy elimination and other optimization. For example, changing (A+B-A) into (B+A-A), permitting it to be optimized into (B+0) then (B).
167+
168+
__Root__
169+
170+
在垃圾回收中,堆中的一个指针变量,垃圾回收器从这个指针开始可达性分析。在代码生成的上下文中,“root”几乎总是指向“stack root”-一个函数调用过程中的局部或临时变量。
171+
172+
__RPO__
173+
174+
Reverse postorder
175+
176+
<hr>
177+
178+
**S**
179+
180+
__Safe Point__
181+
182+
在垃圾回收中,必须标识栈根使得可达性分析能够执行。对于每条指令提供这个信息可能变得不可能,所以这个信息只在指定的安全点计算。使用拷贝收集器,derived 指针绝对不可以跨安全点并且对象指针必须从栈根重新加载。
183+
184+
__SDISel__
185+
186+
Selection DAG Instruction Selection.
187+
188+
DAG 指令选择
189+
190+
__SCC__
191+
192+
Strongly Connected Component
193+
194+
强链接组件
195+
196+
__SCCP__
197+
198+
Sparse Conditional Constant Propagation
199+
200+
稀疏的条件常量传播
201+
202+
__SLP__
203+
204+
Superword-Level Parallelism, 类似 [Basic-Block Vectorization](#).
205+
206+
__SRoA__
207+
208+
Scalar Replacement of Aggregates
209+
210+
聚合标量替换
211+
212+
__SSA__
213+
214+
Static Single Assignment
215+
216+
静态单赋值
217+
218+
__Stack Map__
219+
220+
在垃圾回收中,由代码生成器发出的元数据在一个函数调用的栈帧中标识了roots。
221+
222+
<hr>
223+
224+
**T**
225+
226+
__TBAA__
227+
228+
Type-Based Alias Analysis
229+
230+
基于类型的别名分析

0 commit comments

Comments
 (0)