通过 cloc 工具先统计一下go的源码
/root/.gvm/gos/go1.13.5/src/
150万行go代码
中间代码 #
生成汇编代码
go build -gcflags -S main.go
获得ssa,可以看到汇编语言的优化过程
GOSSAFUNC=main go build main.go
词法语法分析#
这一节介绍了 Go 语言的词法分析和语法分析过程,我们不仅从理论的层面介绍了词法和语法分析的原理,
还从源代码出发详细分析 Go 语言的编译器是如何在底层实现词法和语法解析功能的。
cmd/compile/internal/syntax.scannercmd/compile/internal/syntax.parser
类型检查#
类型检查是 Go 语言编译的第二个阶段,在词法和语法分析之后我们得到了每个文件对应的抽象语法树,随后的类型检查会遍历抽象语法树中的节点,
对每个节点的类型进行检验,找出其中存在的语法错误,在这个过程中也可能会对抽象语法树进行改写,这不仅能够去除一些不会被执行的代码、
makenew
makenew
TODO#