手把手带你写一门编程语言
00-开篇词-让我们来写一门计算机语言吧.html
01-课前热身-开始学习之前我们要准备什么?.html
02-01-实现一门超简单的语言最快需要多久?.html
03-02-词法分析:识别Token也可以很简单吗?.html
04-03-支持表达式:解析表达式和解析语句有什么不同?.html
05-04-如何让我们的语言支持变量和类型?.html
06-05-函数实现:是时候让我们的语言支持函数和返回值了.html
07-06-怎么支持条件语句和循环语句?.html
08-07-怎么设计属于我们自己的虚拟机和字节码?.html
09-08-基于TypeScript的虚拟机(一):实现一个简单的栈机.html
10-09-基于TypeScript的虚拟机(二):丰富特性,支持跳转语句.html
11-10-基于C语言的虚拟机(一):实现一个简单的栈机.html
12-11-基于C语言的虚拟机(二):性能增长10倍的秘密.html
13-12-物理机上程序运行的硬件环境是怎么样的?.html
14-13-物理机上程序运行的软件环境是怎么样的?.html
15-14-汇编代码学习(一):熟悉CPU架构和指令集.html
16-15-汇编语言学习(二):熟悉X86汇编代码.html
17-16-生成本地代码第1关:先把基础搭好.html
18-17-生成本地代码第2关:变量存储、函数调用和栈帧维护.html
19-18-生成本地代码第3关:实现完整的功能.html
20-19-怎么实现一个更好的寄存器分配算法:原理篇.html
21-20-怎么实现一个更好的寄存器分配算法:实现篇.html
22-21-加深对栈的理解:实现尾递归和尾调用优化.html
23-期中测试-快来检验你在起步篇的学习成果吧.html
24-“他山之石”-Sugar:这门课你可以试试这么学.html
25-“屠龙之秘”-实现计算机语言这样的技术能用在哪里?(一).html
26-22-增强编译器前端功能第1步:再识数据流分析技术.html
27-23-增强编译器前端功能第2步:增强类型体系.html
28-24-增强编译器前端功能第3步:全面的集合运算.html
29-25-增强编译器前端功能第4步:综合运用多种语义分析技术.html
30-26-增强更丰富的类型第1步:如何支持浮点数?.html
31-27-增加更丰富的类型第2步:如何支持字符串?.html
32-28-增加更丰富的类型第3步:支持数组.html
33-29-面向对象编程第1步:先把基础搭好.html
34-30-面向对象编程第2步:剖析一些技术细节.html
35-31-面向对象编程第3步:支持继承和多态.html
36-32-函数式编程第1关:实现高阶函数.html
37-33-函数式编程第2关:实现闭包特性.html
38-34-内存管理第1关:Arena技术和元数据.html
39-35-内存管理第2关:实现垃圾回收.html
40-36-节点之海:怎么生成基于图的IR?.html
41-37-从AST到IR:体会数据流和控制流思维.html
42-38-中端优化第1关:实现多种本地优化.html
43-39-中端优化第2关:全局优化要怎么搞?.html
44-40-中端优化第3关:一起来挑战过程间优化.html
45-41-后端优化:生成LIR和指令选择.html
46-42-到这里,我们的收获和未尽的工作有哪些?.html
47-期末考试-实现编程语言这些核心知识点,你掌握得咋样了?.html
48-结束语-等待你大展身手的那些领域.html