本章总结

本节阅读量:

第三章在整数、加法、变量和 let 之外,加入了:

1
2
谓词 eq?
条件表达式 if

本章没有另加布尔值,而是直接使用整数条件:

1
2
0      表示条件不成立
非 0   表示条件成立

eq? 的结果固定为 01

解释器里的核心变化是选择:

1
2
3
先求值 condition
condition 非 0,只求值 then
condition 为 0,只求值 else

编译器里的核心变化是控制流:

1
AST -> IR branch / jump / label -> cmpq / je / jmp

label 标出基本块入口,branch 和 jump 连接这些块。then 与 else 把结果写进同一个内部名字,两条路径再在 end label 汇合。

前两章的分界线仍然成立:

1
2
3
4
AST          保存程序结构
解释器       按语言规则选择并求值
IR           保存计算步骤和控制流
汇编生成器   把 IR 操作翻译成机器指令文本

下一章会加入函数和调用。到那时,控制流不只会跳到同一函数里的 label,还会进入另一段函数代码并返回。


3.7 汇编:让 CPU 真的选择道路

上一节

3.9 练习

下一节


本节目录