c9x Blog

c9x.me,关于编译器、虚拟机与实验性编程语言实现的个人技术网站。

QBE 编译器后端 1.3 版本发布

QBE 1.3 是自 1.0 以来最重要的版本,新增约 7k 行代码、删除 1.5k 行。核心看点:作者以个人化笔触详细记录了编译器后端优化的真实过程——受 Coremark 基准测试刺激后,团队从 40% 的 gcc-O2 性能追到 63%,并通过内联调整达到 70% 目标;新引入的 mgen 元编程工具基于 OCaml,将 Lisp 风格的 IL 模式编译为 C 匹配代码,解决了长期遗留的模式匹配优雅性问题;Roland Paterson-Jones 贡献了多项优化,Scott Graham 上游了 Windows ABI 支持,作者实现了 position-independent code。技术细节翔实(GVN/GCM、循环优化、CFG 简化等),且保持了鲜明的人味和团队协作视角。
评论点赞收藏74 天前

QBE – 轻量级编译器后端

QBE 是一个追求"用 10% 代码实现工业级编译器 70% 性能"的开源编译器后端项目。代码库小巧(hobby-scale),适合爱好者参与开发和 hack,编译速度极快(约 2 秒)。它采用统一的 SSA 中间语言,完整实现 C ABI,支持 amd64、arm64 和 riscv64 目标平台,内置常量传播、死指令消除、循环分析启发式溢出等优化。页面包含完整的 IL 语言示例和社区参与方式(邮件列表与 IRC)。这是一个有明确设计哲学、代码质量高的实用工具项目,适合对编译器实现、编程语言后端感兴趣的技术读者。
评论点赞收藏100 天前

Miniyacc – 一款轻量级的C语言Yacc解析器生成工具

这不是评测或摘抄,而是一位开发者亲手写的一个单文件 Yacc 实现(约 2000 行 C89),并附上了完整的内部原理讲解。作者从 LALR(1) 状态生成、FIRST/Nullable 推导、GOTO/CLOSURE 操作,一直讲到表压缩的 Row Displacement 算法和 yychk 校验表的坑——甚至点出了 actgen 中容易出现隐蔽 bug 的"行包含"问题。附完整可运行的例子(加减乘除解析器)和对比说明:生成表效率与 GNU Bison 相当、500+ 条规则编译 <1s。适合对编译器前端、语法分析、Yacc 内部实现感兴趣的读者当作第二本"龙书"配套实战材料来读,也适合想快速为自研语言搭建解析器的开发者直接拉取使用。
评论点赞收藏402 天前

绿线程(用户态线程)原理解析

这是一篇由个人技术作者撰写的绿线程(用户态线程)实战教程引言。核心看点:作者不仅讲解概念,还提供了完整可运行的 C 语言参考实现(含 GitHub 仓库),并设计了按 git 分支分节的渐进式学习路径。文章清晰对比了绿线程与内核线程的优劣——启动/切换极快、支持高并发(如 Go goroutine 的底层技术),但受限于异步 IO 和单核并行能力。给出了带 gtgo/gtyield/gtret 函数的具体代码示例,并邀请读者在 GitHub 上提 issue 或 PR 参与改进。全文有鲜明的个人观点(如质疑维基百科"虚拟机"定义的准确性),风格真诚,不是机构通稿或 SEO 拼凑。
评论点赞收藏431 天前

面向业余编译器编写者的资源汇总

一位编译器从业者维护的个人精选资源列表,专门面向业余/入门级编译器编写者。每个条目都附有简短但实诚的个人点评——哪篇论文值得读、哪本教材过时了、哪段代码有错、哪个算法虽然经典但实际慢——而非千篇一律的通稿简介。涵盖编译器哲学(未定义行为陷阱)、经典编译器描述(Plan 9 C编译器、PCC、lcc)、入门与进阶教材、SSA形式与支配树算法、优化(稀疏条件常量传播、全局值编号)、寄存器分配(线性扫描与图着色)、代码生成以及机器相关ABI文档。作者明确排除了自己觉得不实用或还不了解的内容,并邀请读者推荐补充,页面有鲜明的人味和实操导向,没有SEO堆砌或机构号套路。
评论点赞收藏731 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。