您的位置  > 互联网

c语言编译器的思路和方法以及方法和思路方法

如果你觉得进不了CSAPP,可以试试袁春风老师的书《计算机系统》,搭配MOOC,先打牢基础。 说实话,写字有点意思,但是没什么用。 以后会越来越吃力。 所以别太认真了。 重点应该放在学习理论知识上,这样以后写出来的经验才能运用到其他地方。

其实我已经差不多讲清楚了编写x86汇编和引导c语言编译器的思路和方法了。 按照8cc的步骤就可以了。

----------------------------------可爱的分割线---------- --- -----------------------

我现在正在看8cc。 它是用c编写的ac编译器。 可以引导。 除了二维数组的初始化外,其他大部分功能都比较齐全。 因为我也想自己弄一个ac编译器。 我刚从第一部开始看。 都一一复制了。 (虽然我不打算全部拿到700左右。但我估计也会拿到450以上)。 在这种情况下。 我非常清楚这个编译器是如何一步一步构建出来的。 你是怎么改变的? 并对它完成了哪些功能、没有完成哪些功能有一个大概的了解。

当然,你也可以按照自己的方式来写。 比如我用的是递归下降,8cc是调度领域算法。 我的词法分析是状态自动机,8cc 是直接字符串分析。

在这个过程中,可以边写边补充相关知识,比如汇编、链接等,以及相关数据结构的知识。 另外,在这个过程中你还得补一定量的C语法。 之前没有认真学过的东西,都得在这个过程中补上(毕竟补不上就不会写下来)。

我感觉你可以看看Aoki 的自制编译器书作为参考。 并且parr也可以读(本书的6.2教你如何编写多重和嵌套作用域符号表)

在写完能够引导之后。 我想我可以开始补充我的理论知识了。 比如我给大家看了《龙书》,a(第二版)。 但8cc没有IR,更不用说寄存器优化什么的,它只使用1-tosca方法。 (这个r已经回答过,你可以在知乎上搜一下。)友情提醒:9cc有IR和寄存器分配(好像是线性扫描方式)

不管怎样,我必须写一个完整的、学习过的编译器,并将其翻译成x86。 我强烈推荐8cc。 其他的lcc、ucc、c4等我都看过了,都特别难。 8cc真是新手教程中的新手教程,妈的。 8cc还有一套完整的测试(自己写的脚本)。 无论您编写哪个函数,都会对其进行测试。 真是的,有这样的良心,哪里能找到你学不会的好代码呢? !

我泪流满面,不知道该说什么,你们赶紧行动吧(搞笑

//8cc//?after=+734 附件是链接。 从这里开始。 它只是执行+、-、*、/,并在开头读取数字。 相当于制作了一个四步计算器。 非常适合初学者。