posts

编译原理与实践专题:从词法分析到 JIT 编译器

编译原理是计算机科学的基石,从正则与 DFA 到语法分析、SSA 中间表示与寄存器分配,构成了理解语言实现与现代运行时(JVM、V8、Rustc)的核心。本专题系统覆盖词法分析器、语法分析与 AST 构建、语义分析与中间表示、中间代码优化、目标代码生成,以及解释器与 JIT 编译,帮助开发者深入理解语言如何被翻译与执行。

编译器把「人能读的程序」翻译成「机器能跑的东西」——这中间的每一层(词法、语法、语义、优化、生成)都是抽象与权衡的艺术。理解编译器的各个阶段,是深入语言运行时与性能优化的钥匙。

本专题共收录 48 篇深度文章,从词法分析器出发,依次展开语法分析与 AST、语义分析与中间表示、中间代码优化、目标代码生成,最终落到解释器与 JIT 编译,形成「前端 → IR → 优化 → 后端 → 运行时」的完整编译器实现链路。扩展部分进一步覆盖手写 AST 解释器的求值语义、LLVM 与 LLVM IR 后端、类型系统与类型推断、现代优化 Pass 管线、运行时与内存管理,以及错误恢复与诊断,补齐了从求值模型到内存子系统的关键拼图。最新一批文章继续深入寄存器分配与图着色、JIT 热点优化与去优化、编译器架构与多遍设计、并行与增量编译、宏系统与元编程,以及编译器正确性与验证,把编译器的后端资源分配、运行时自适应优化与工程可信度一并纳入专题版图。本批再新增六篇,把视野从编译器内部延伸到与它协同工作的整条工具链:链接加载与运行时启动、数据流分析框架、向量化与 SIMD、垃圾回收算法、语言服务器与 IDE 工具链,以及交叉编译与多目标后端,补上了「编译产物如何落地、优化如何被系统化计算、代码如何面向多平台」这三块拼图。本批再添六篇,把编译器的「分析与生成」推进到更细的纵深:以运行时画像驱动布局的 PGO 与 BOLT、滑动窗口改写与 E-graph 搜索的窥孔与超优化、建立在格与不动点之上的抽象解释与形式化验证、从前端生成视角看语法描述的解析器生成器与 DSL、面向动态语言的内联缓存与去优化,以及把并行映射到 GPU 的异构卸载编译。本批六篇继续把「优化理论」与「工程可信度」向纵深推进:循环变换与依赖分析、MLIR 的多层次方言与渐进降级、零成本异常与表驱动栈展开、约束求解与类型类解析、可复现构建与确定性输出,以及把 WebAssembly 作为编译目标与执行环境的后端实践。 本批再新增六篇,聚焦 SSA 构造与销毁、逃逸分析与栈上分配、LTO 与 ThinLTO、协程与 async 降级、ABI 与调用约定,以及调试信息与源码映射,把中间表示的构造、跨模块优化与调试保真度补入链路。本批再新增六篇,继续深化后端代码生成与工程可信度:指令选择与指令调度、编译期求值与 constexpr/comptime、ELF/Mach-O/COFF 目标文件格式、Sanitizer 与编译期安全加固、查询式增量类型检查的 Salsa 架构,以及浮点语义与 fast-math 优化。

📌 相关专题:计算机基础专题 (算法与数据结构)、C++ 专题 (底层实现语言)、Rust 专题 (系统编程)、Java 专题 (JVM 运行时)


一、编译器前端

二、IR 与优化

三、后端与运行时

四、架构、工程与验证

五、SSA、链接时优化与调试信息


延伸阅读

专题统计

全部文章 game golang 客户端开发 Minigame Saas rust Python Java cg Typescript