在我的编译器构建研究生类,我们介绍了lattice的概念。已经针对晶格进行了三场讲座,到目前为止,这似乎是一个有趣的切线,但难题是它并没有真正帮助解释编译器如何使用晶格来解决具体问题。
我们已经介绍了解析和类型检查。我们将开始活跃度分析和注册分配。
注意,我不是在寻找有关构建编译器的资源。以下链接列表涵盖了相当不错的内容。我正在寻找的是关于编译器与晶格之间的关系的解释,这是大多数示例中的加分项。
Learning Resources on Parsers, Interpreters, and Compilers
How much of the compiler should we know?
Learning to write a compiler
最佳答案
在对正在编译的程序进行静态分析时,格子是一种非常有用的表示状态的结构-例如。用于删除通过 liveness 分析,可用/非常繁忙的表达式,到达定义,符号分析和恒定传播检测到的无效代码。
如果需要详细信息,这是一本很好的读物:Lecture Notes on Static Analysis
关于math - 编译器如何使用晶格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2625261/