From d5d6855a5ea7a9757436319d7965b98c6c00c212 Mon Sep 17 00:00:00 2001 From: pityonline Date: Sun, 2 Sep 2018 23:12:03 +0800 Subject: [PATCH] =?UTF-8?q?PRF:=20#10034=20=E5=BE=AE=E8=B0=83=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E4=B8=8E=20pass=20=E7=9A=84=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... An Official Introduction to the Go Compiler.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/translated/tech/20180427 An Official Introduction to the Go Compiler.md b/translated/tech/20180427 An Official Introduction to the Go Compiler.md index aeb419daa2..622bf49c6d 100644 --- a/translated/tech/20180427 An Official Introduction to the Go Compiler.md +++ b/translated/tech/20180427 An Official Introduction to the Go Compiler.md @@ -9,7 +9,7 @@ Go 编译器介绍 需要澄清的是,名称 “gc” 代表 “Go 编译器Go compiler”,与大写 GC 无关,后者代表垃圾收集garbage collection。 -### 1、 解析 +### 1、解析 * `cmd/compile/internal/syntax`(词法分析器lexer解析器parser语法树syntax tree) @@ -17,7 +17,7 @@ Go 编译器介绍 每个语法树都是相应源文件的确切表示,其中节点对应于源文件的各种元素,例如表达式、声明和语句。语法树还包括位置信息,用于错误报告和创建调试信息。 -### 2、 类型检查和 AST 变换 +### 2、类型检查和 AST 变换 * `cmd/compile/internal/gc`(创建编译器 AST,类型检查type-checkingAST 变换AST transformation) @@ -27,7 +27,7 @@ gc 包中包含一个继承自(早期)C 语言实现的版本的 AST 定义 特定变换也基于 AST 完成。一些节点被基于类型信息而细化,例如把字符串加法从算术加法的节点类型中拆分出来。其它一些例子是死代码消除dead code elimination函数调用内联function call inlining逃逸分析escape analysis(LCTT 译注:逃逸分析是一种分析指针有效范围的方法)。 -### 3、 通用 SSA +### 3、通用 SSA * `cmd/compile/internal/gc`(转换成 SSA) * `cmd/compile/internal/ssa`(SSA 相关的环节pass和规则) @@ -44,9 +44,9 @@ gc 包中包含一个继承自(早期)C 语言实现的版本的 AST 定义 这类通用的编译环节的一些例子包括,死代码消除、移除不必要的空值检查,以及移除无用的分支等。通用改写规则主要考虑表达式,例如将一些表达式替换为常量,优化乘法和浮点操作。 -### 4、 生成机器码 +### 4、生成机器码 -* `cmd/compile/internal/ssa`(SSA 低级化和架构特定的 pass) +* `cmd/compile/internal/ssa`(SSA 低级化和架构特定的环节) * `cmd/internal/obj`(机器码生成) 编译器中机器相关的阶段开始于“低级”的编译环节,该阶段将通用变量改写为它们的特定的机器码形式。例如,在 amd64 架构中操作数可以在内存中操作,这样许多加载-存储load-store操作就可以被合并。 @@ -61,13 +61,13 @@ gc 包中包含一个继承自(早期)C 语言实现的版本的 AST 定义 ### 扩展阅读 -要深入了解 SSA 包的工作方式,包括它的 pass 和规则,请转到 [cmd/compile/internal/ssa/README.md][1]。 +要深入了解 SSA 包的工作方式,包括它的环节和规则,请转到 [cmd/compile/internal/ssa/README.md][1]。 -------------------------------------------------------------------------------- via: https://github.com/golang/go/blob/master/src/cmd/compile/README.md -作者:[mvdan][a] +作者:[mvdan][a] 译者:[stephenxs](https://github.com/stephenxs) 校对:[pityonline](https://github.com/pityonline), [wxy](https://github.com/wxy)