LabHub
开始
学习 学习路径 课程

编译器 — 从头到尾亲手打造一门小语言

작은 언어 '미니' 를 렉서·파서·의미 분석·트리 인터프리터·바이트코드 VM·최적화·x86-64 코드 생성·레지스터 할당과 GC 까지 직접 만들고, 모듈마다 만든 것이 다음 모듈의 입력이 됩니다. 채점기는 적어 낸 답이 아니라 여러분의 구현을 무작위 프로그램으로 돌려 기준 구현과 대조하고, 코드 생성은 실제로 구워 실행합니다. 끝에서는 gcc·clang 의 -O0/-O2 어셈블리와 LLVM IR 을 같은 눈으로 읽어, 실무 컴파일러가 무엇을 하는지 숫자로 확인합니다.

고급 · 레슨 30 · 实验 10

开始实验

커리큘럼

编译器做什么 — 先翻译,还是立即执行

词法分析器 — 把字符切成记号,位置一路带到底

语法分析器 — 递归下降、Pratt 与错误恢复

语义分析 — 作用域、名称解析与可知处的类型

树遍历解释器 — 环境与闭包

字节码与栈式虚拟机 — 常量池、槽位、跳转回填

中间表示与优化 — 常量折叠、CFG、支配关系与 SSA

x86-64 代码生成 — 调用约定与栈帧

寄存器分配与垃圾回收 — 线性扫描与 mark-sweep

读懂实战编译器 — 数一数 gcc 与 clang 的输出

参考文档