![编译方法、技术与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/849/51730849/b_51730849.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.2.4 中间代码生成
在编译的过程中会生成多种中间表示形式,如语法树、词法单元流等,不同的中间表示形式可满足编译各任务的需要,比如语法分析树有利于在编译过程中进行静态检查。
在完成语义分析后,编译器前端的工作告一段落。编译器将语法分析树转化为更适合代码优化及目标代码生成的形式,这一过程被称为中间代码生成。我们关注一种中间表达形式:三地址码,每个指令具有不多于三个的运算分量,这种形式与机器码中寄存器的读取和计算类似。
例如,对于语法树:
![](https://epubservercos.yuewen.com/A141C7/30532542904512906/epubprivate/OEBPS/Images/20_02.jpg?sign=1739302192-zf2ZMnAXYzo8I7QCnSB1qUFWBZPjuoxl-0-4f1ae0f108117e6e3f6924ee333fe4b4)
生成的三地址码为:
![](https://epubservercos.yuewen.com/A141C7/30532542904512906/epubprivate/OEBPS/Images/20_03.jpg?sign=1739302192-HImpOFqRaLGTeWnzFLoxnTeSNtSxkXoH-0-f70ea602c1da14c4d0b6b5a70b2927ed)
中间代码生成器按照表达式的执行顺序(后序遍历语法树),将语法树转化为中间代码。在第4章中,我们将讨论以下内容:
●中间代码的表示形式,不同的中间代码表示形式及其优劣。
●类型和声明的相关概念(例如,类型表达式、类型等价、局部变量名的存储布局、类型声明和类型记录等表达式的生成)。
●表达式翻译策略。