相关疑难解决方法(0)

学习编写一个编译器

首选语言:C/C++,Java和Ruby.

我正在寻找一些有用的书籍/教程,如何编写自己的编译器只是为了教育目的.我最熟悉C/C++,Java和Ruby,所以我更喜欢涉及这三者之一的资源,但任何好的资源都是可以接受的.

language-agnostic compiler-construction

699
推荐指数
29
解决办法
29万
查看次数

从一个简单的(也许是最简单的)C编译器开始?

我遇到了这个问题:使用Turbo Pascal编写编译器

我很好奇是否有任何教程或参考资料解释如何创建一个简单的C编译器.我的意思是,如果它让我达到理解算术运算的水平就足够了.在阅读肯·汤普森的这篇文章后,我变得非常好奇.写一些理解自己的东西的想法似乎令人兴奋.

为什么我提出这个问题而不是问Google?我试过谷歌和帕斯卡一个是第一个链接.其余的似乎没有相关性,并且增加了......我不是CS专业(所以我仍然需要了解所有这些工具,如yacc),我想通过这样做来学习这一点,并希望有更多经验的人总是比谷歌更擅长这些事情.我想阅读一些与上面列出的文章相同的文章,但至少突出了构建一个简单的C编译器的自举阶段.

另外,我不知道最好的学习方法.我是否开始用C或其他语言构建C编译器?我是否编写C编译器或其他语言?一旦我有方向去探索,我觉得这样的问题会得到更好的回答.有什么建议?

有什么建议?

c compiler-construction programming-languages

40
推荐指数
8
解决办法
3万
查看次数

典型的C++编译器处理什么工作?

在研究了编译器及其工作原理后,我了解到该过程通常分为4个步骤:预处理器,编译器,汇编器和链接器.我设想这些步骤的方式是每个人都有自己独立的程序; 预处理程序,编译程序,汇编程序和链接程序.但是,您了解到有时创建汇编代码和生成目标文件的过程全部由编译器程序处理,有时则不处理.它似乎很大程度上取决于所使用的上下文和编程语言.我的问题是,如何将C++源代码转换为机器代码的典型翻译过程如何?

  1. 预处理器是否与编译器分开?或者该过程通常是编译器程序的一部分?
  2. 编译器通常负责什么?生成汇编代码然后转换为机器代码?
  3. 链接器是否是在编译器完成后运行的独立程序?

旁注:我的问题与其他C++编译器线程不同,因为我不仅询问编译器如何工作,而且如果某些其他进程(如链接)存在自己的可执行程序,或者它们通常内置于编译器程序中.

c++ compiler-construction linker machine-translation

6
推荐指数
1
解决办法
170
查看次数