路线图
本节阅读量:这套课程的目标,是用 C++ 实现一门很小的 Lisp 风格语言,同时把解释器语义和编译到 x86-64 汇编的核心路径讲清楚。
先把边界说清楚:
- 实现语言:C++17 或 C++20
- 源语言:小型 Lisp 风格表达式语言
- 解释器:用于说明语言特性的语义
- 编译器:生成 x86-64 System V ABI 的 AT&T 汇编
- 编译边界:只实现
compile,不实现build,不调用cc - 汇编运行方式由用户手动完成
- 默认运行环境:Linux、macOS 或 WSL;命令示例使用 Unix 风格 shell
课程主线
第 0 章先解决一件事:看到课程里的命令时,知道自己在运行什么。我们会看项目的目录结构、命令如何进入 mini 的 C++ 入口、课程会用到的少量 make 用法,以及编译出来的程序该如何执行。
第一章只处理一个很小的程序:
|
|
它的结果是:
|
|
但我们不会只写一个加法函数。我们会完整走一遍:
|
|
也就是说,同一个程序会有两条路:
|
|
这里要注意一个边界:compile 只负责生成汇编文件。真正把汇编链接成可执行程序,会由我们手动调用 cc 完成。
后面的章节会沿着这条路逐步加入新能力:
|
|
本节目录