一个小型 C 编译器
9cc C 编译器 ===============
注: 9cc 已不再是一个活跃的项目,其继任者是 chibicc。
9cc 是我 8cc C 编译器的继任者。在这个新项目中,我试图编写一种代码,可以极其轻松地被理解,同时创建一个能够生成合理高效的汇编的编译器。
与 8cc 一样, 9cc 的内存管理策略是不进行内存管理。 我们使用 malloc() 分配内存, 但从不调用 free()。 我知道人们会觉得这个策略有些奇怪, 但这实际上是一种合理的设计选择, 适用于短寿命的程序, 例如编译器。 这种策略大大简化了代码, 还完全消除了使用后释放的错误。
如果这样可以使代码更简单,我们会使用粗暴的方法。我们不会太费心去实现复杂的数据结构,以使编译器运行更快。如果性能成为问题,我们可以在当下即时解决。 - 如果这样可以使代码更简单,我们会将全部内容一次性加载到内存中。我们不会使用字符 IO 来从输入文件中读取数据;相反,我们会一次性将整个文件读取到一个字符数组中。同样,我们会一次性将整个文件进行标记,而不是与解析器同时进行。
暂无开放 Issues,或尚未同步最近议题。