1. 为什么要学习编译器的实现
答: 知道编译,链接,动态库加载这些过程可以提高学习效率,写出更好的代码
2.为什么要看ssa的实现呢
答:1.使用ssa二进制文件大小减少了30%, 性能提升5%-35%(这是一件很恐怖的事情,全方位的提升)
compiler的实现入口在src/cmd/compile(go源码)下面
以下是从main函数到ssa pass的流程图:
ssa有多个pass,passes数组的定义在
src\cmd\compile\internal\ssa\compile.go:331
启动过程中会根据定义,做一波拓扑排序,排序依据 passOrder定义的