百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
9

9cc

> 编程语言
开源

一个小型 C 编译器

1.9K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

一个小型 C 编译器

9cc C 编译器 ===============

注: 9cc 已不再是一个活跃的项目,其继任者是 chibicc。

9cc 是我 8cc C 编译器的继任者。在这个新项目中,我试图编写一种代码,可以极其轻松地被理解,同时创建一个能够生成合理高效的汇编的编译器。

  1. 将输入字符串编译为抽象语法树。
  2. 对树进行语义分析,为每个树节点添加类型。
  3. 将树转换为中间代码(IR),该代码在某程度上类似于 x86-64 指令,但具有无限数量的寄存器。
  4. 将无限数量的寄存器映射到有限数量的寄存器。
  5. 从 IR 生成 x86-64 指令。
  • 与 8cc 一样, 9cc 的内存管理策略是不进行内存管理。 我们使用 malloc() 分配内存, 但从不调用 free()。 我知道人们会觉得这个策略有些奇怪, 但这实际上是一种合理的设计选择, 适用于短寿命的程序, 例如编译器。 这种策略大大简化了代码, 还完全消除了使用后释放的错误。

  • 如果这样可以使代码更简单,我们会使用粗暴的方法。我们不会太费心去实现复杂的数据结构,以使编译器运行更快。如果性能成为问题,我们可以在当下即时解决。 - 如果这样可以使代码更简单,我们会将全部内容一次性加载到内存中。我们不会使用字符 IO 来从输入文件中读取数据;相反,我们会一次性将整个文件读取到一个字符数组中。同样,我们会一次性将整个文件进行标记,而不是与解析器同时进行。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言