Golang 编译器代码浅析
Home
极简计算机结构介绍
Linux核心概念详解
搜索
⌃
K
Links
0. Golang 编译器代码浅析
1. golang 编译器 - 前言
1.1 编译器简介
1.2 Golang 编译器
1.3 Go 语言版本
1.4 项目设置
1.5 约定
1.6 写作目的
2. golang 编译器 - 词法分析
2.1 简介
2.2 代码结构
2.3 处理字符
2.4 扫描Token
2.5 总结
3.a 语法分析理论知识
3A.1 语法分析简介
3A.2 文法
3A.3 语法解析
3A.3.1 自顶向下(Top-Down)
3A.3.2 自顶向下 - 递归下降
3A.3.3 自顶向下 - LL(1)文法
3A.3.4 自底向上(Bottom-Up)
3A.3.5 自底向上 - LR(0)项集及SLR预测表
3A.3.6 自底向上 - LR(1)、LALR
3A.4 语法分析工具
3A.5 总结
3B. golang 编译器 - 语法分析
3B.1 简介
3B.2 代码结构
3B.3 数据结构
3B.4 构造语法树
3B.5 Unit Test及AST可视化
4. Golang 编译器 - 类型检查
4.1 简介
4.2 代码结构
4.3 符号解析
4.4.1 数据结构 - 作用域
4.4.2 数据结构 - Package
4.4.3 数据结构 - Object 对象
4.4.4-1 类型数据结构 - 简介
4.4.4-2 类型接口
4.4.4-3 基础类型
4.4.4-4 内置复合类型
4.4.4-5 Struct 类型
4.4.4-6 Interface 类型
4.4.4-7 Named 类型
4.4.4-8 Tuple 类型
4.4.4-9 Sum 类型
4.4.4-10 Function & Method 类型
4.4.4-11 泛型类型
4.4.4-12 类型的等价规则
4.4.4-13 类型的比较规则
4.4.4-14 总结
4.4.5 类型检查器
4.4.6 总结
4.5.1 类型检查逻辑 - 包加载器
4.5.2 类型检查逻辑 - 初始化
4.5.2-1 全局作用域
4.5.2-2 类型检查器
4.5.3 类型检查逻辑 - 流程分析
4.5.3-1.1 总体流程
4.5.3-1.2 类型检查准备工作
4.5.3-1.3 类型检查核心逻辑
4.5.3-1.3a 总体介绍
4.5.3-1.3b 类型表达式的类型检查
4.5.3-1.3c 求值表达式的类型检查
4.5.3-1.3d 类型兼容性检查
4.5.3-1.3e 处理delayed队列
4.5.3-1.4 构建初始化顺序
4.5.3-1.5 总结
4.5.3-2 特定问题分析
4.5.3-2a 对象循环依赖检查
4.5.3-2b 方法与属性查找
4.5.3-2c Underlying Type
4.6 如何测试
4.7 总结
5. Golang 编译器 - IR Tree
5.1 简介
5.2 代码结构
5.3 数据结构
5.4 处理逻辑
5.5 编译日志
5.6 Unit Test
5.7 总结
6. golang 编译器 - 初始化任务
6.1 简介
6.2 代码结构
6.3 总体逻辑
6.4 赋值语句
6.5 编译日志
6.6 Unit Test
6.7 总结
7. golang 编译器 - 清除无效代码
7.1 简介
7.2 处理逻辑
7.3 Unit Test
8. golang 编译器 - Inline
8.1 简介
8.2 Inline的问题
8.3 代码结构
8.4 处理逻辑
8.4.1 遍历调用链
8.4.2 内联判断
8.4.3 内联操作
8.4.4 编译日志
8.4.5 Unit Test
8.4.6 总结
9. golang 编译器 - 逃逸分析
9.1 什么是逃逸分析
9.2 Go 的逃逸分析
9.3 算法思路
9.4 代码结构
9.5 处理逻辑
9.5.1总体逻辑
9.5.2 数据结构
9.5.3 构建数据流有向图
9.5.4 逃逸分析
9.6 编译日志
9.7 Unit Test
9.8 总结
10. golang 编译器 - 函数编译及导出
10.1 简介
10.2 编译函数
10.2.1 SSA
10.2.2 ABI
10.2.3 并发控制
10.3 导出对象文件
10.4 总结
11. Golang 编译器 - 写在最后
由
GitBook
提供支持
Comment on page
4.5.2 类型检查逻辑 - 初始化
前文介绍了大量与类型检查相关的数据结构,这一节我们从如下两个方介绍类型检查器的初始化流程:
1.
初始化全局作用域
2.
初始化类型检查器
完成初始化之后,类型检查器才能开始正式进行类型检查工作。
4. Golang 编译器 - 类型检查 - 以前
4.5.1 类型检查逻辑 - 包加载器
下一个 - 4. Golang 编译器 - 类型检查
4.5.2-1 全局作用域
最近更新
2yr ago