总结:编译原理--第八章 代码生成

第八章  代码生成

我们的编译器模型的最后一个步骤就是代码生成器。

  • 代码生成是编译器的最后一个步骤。代码生成器把前端生成的中间表示形式映射为目标程序。
  • 指令选择是为每个中间表示语句选择目标语言指令的过程。
  • 寄存器分配是决定哪些 IR 值将会保存在寄存器中的过程。
  • 寄存器指派是决定用哪个寄存器来存放一个给定的 IR 值的过程。
  • 可重定向编译器是能够为多个指令集生成代码的编译器。
  • 虚拟机是一些字节代码中间语言的解释程序,这些字节代码是为诸如 Java 和 C#这样的语言生成。
  • CISC 机器通常通常是一个二地址机器。它的寄存器相对较少,有几种寄存器类型,并且有复杂寻址模式的可变长指令。
  • RISC 机器通常是一个三地址机器。它拥有很多寄存器,且运算都在寄存器中进行。
  • 基本块是一个三地址语句的最大连续序列。
  • 流图是程序的一种图形化表示方式。其中图的结点是基本块,而图的边显示了控制流如何在基本块之间流动。
  • 流图中的循环是一个强连通的区域。这个区域只有一个被称为循环首结点的入口。
  • 基本块的 DAG 表示是一个有向无环图。
  • 窥孔优化是一种提高代码质量的局部变换。它通常通过一个滑动窗口作用于一个程序。
  • 指令选择可以通过一个树重写过程完成。
  • Ershov 数指出了如果不把任何临时值保存回内存中,对一个表达式求值需要多少个寄存器。
  • 溢出代码是一个把某个寄存器中的值保存到内存中的指令序列。这些指令的目的是在寄存器中腾出空间,以保存另一个值。

希望我的总结可以帮助大家,感谢阅读我的博客!

猜你喜欢

转载自blog.csdn.net/weixin_42558631/article/details/81266004