Mag*_*nus 6 compiler-construction language-design
我一直在看编译器设计.我在大学完成了一个学期的课程并且已经阅读了Grune等人的" 现代编译器设计 ",该书似乎提倡使用带注释的抽象语法树作为中间代码,这就是我们在课程中使用的内容.
我的问题是这种方法的好处是什么,而不是产生某种堆栈机器语言或低级伪代码,特别是关于拥有可以针对许多机器的编译器.
简单地定位已经存在的低级表示(如LLVM)并将其用作中间表示是一个好主意吗?
如果你的语言足够复杂,你最终会得到一系列略有不同的中间表征.并不重要,哪种表示将是您的最终目标 - llvm,C,本机代码,CLR,JVM等等.它不应该影响编译器的设计和体系结构.
而且,根据我的个人经验,您拥有的中间步骤越多,其间的转换尽可能微不足道,编译器的体系结构就越好.