编译器设计和施工课程

时间:2010-08-06 04:56:38

标签: compiler-construction

今年秋天,我将为我的硕士课程开设几门课程,其中一门课程是编译器设计和构建。我非常精通大多数与计算机技术有关的事情,但我对编译器如何处理脏问题没有多少经验,我只是在需要时使用它们。我通常不会对课程感到紧张,但我觉得我正在裸体地走进这个课程。如果有人可以推荐一些好的阅读或提供一些我可以研究的基本原则的简短列表,以便我快速快速,我将非常感激。

更新

我在课堂上很棒,the text book we used实际上非常好。 This site还帮助我可视化和测试我的正则表达式(我现在认为这是学习编译器时最好的东西)。我很快就掌握了LEX的基础知识,但YACC(出于某种原因)对我来说有点困难。只需在线查看示例,就可以帮助他们。

4 个答案:

答案 0 :(得分:5)

编译器是一个令人头疼的练习。但是,如果你对数据结构,算法和汇编代码有扎实的把握,并且有思考细节的倾向,你可能会发现 该课程引人入胜,因为它与大多数传统的商业数据处理和/或嵌入式计算不同。

我确保你的汇编代码背景非常好。大多数程序编码器不用于加工指令,寄存器,地址模式和指针。如果你得到那些,教练可能会很好地解释其余部分。

如果您不熟悉指针,那么 run 不会走到最近的C编译器并编写一堆使用它们的程序。

有关编译器不具备的一些背景知识,请参阅 Writing compilers ... what's right and what's wrong?

如果你想要一个非常有趣的练习,你可以学习MetaII,这是怎么回事 构建一个编译器,以极少的努力构建编译器。有一篇关于如何做的10页纸 这个中间有一个令人兴奋的时刻,你突然看到了如何 编译器可以编译自己。有一个MetaII教程(附论文):

http://www.bayfronttechnologies.com/mc_tutorial.html

答案 1 :(得分:3)

检查Dragon Book

答案 2 :(得分:2)

通常强烈推荐dragon book

答案 3 :(得分:0)

有人第一次向我解释汇编时,我很惊讶根本就是这样。在编译中总是存在相同的高级阶段,在子任务中具有相同的划分。

回顾过去,其中一些 有点武断。编写编译器很困难,并且重新应用过去曾为无数其他人工作的技术确实是一个好主意。但是,根据您的背景,您可能会首先感到惊讶的是,一切都不像基本原理那样自然地流入计算机科学的其他领域。

相关问题