⚡ 编译时 · 运行时
协同设计 · 30章完整目录
📚 全30讲 · 点击跳转
01
编译器概述
基本概念 · 词法/语法/语义分析 · 中间代码 · 优化 · 目标生成 · 解释器区别
02
运行时系统概述
运行时环境 · 栈/堆/静态区 · 数据表示:基本类型、复合类型、对象模型
03
编译时与运行时的分界线
静态 vs 动态 · 编译时确定 vs 运行时确定 · 虚函数/动态绑定/反射
04
符号表与名字解析
哈希表/树 · 作用域 · 编译时解析 vs 运行时动态查找
05
类型系统与类型检查
静态/动态类型 · 类型推导 · 隐式/显式转换 · 编译时检查 · RTTI
06
中间表示(IR)的设计
三地址码 · SSA · 控制流图 · IR对运行时性能的影响
07
代码生成与运行时布局
目标代码生成 · 寄存器分配 · 栈帧布局 · 调用约定
08
内存管理
静态/栈/堆分配 · GC协同 · 逃逸分析 · 写屏障
09
异常处理
异常表生成 · 运行时传播 · 栈展开 · C++/Java/Python对比
10
虚函数与动态分发
vtable生成 · 动态分发 · 多重继承布局 · 接口分派
11
泛型与模板
模板实例化 · 泛型擦除 · reified generics · 性能权衡
12
内联与去虚拟化
编译时内联 · CHA去虚拟化 · 方法内联收益与风险
13
常量折叠与常量传播
编译时常量计算 · 运行时常量池 · 字符串驻留 · constexpr
14
循环优化与运行时反馈
循环展开/向量化 · profile反馈 · JIT循环检测
15
分支预测与编译优化
静态/动态分支预测 · likely/unlikely · PGO
16
JIT 编译技术
JIT原理 · 方法级/跟踪JIT · 分层编译 · JIT与AOT协同
17
AOT 编译与预编译
AOT场景 · 混合模式(ART/.NET Native) · 预计算
18
反射与元数据
元数据生成 · 运行时反射API · 性能开销 · 编译时优化
19
序列化与反序列化
编译时代码生成(protobuf/flatbuffers) · 反射序列化 · 性能对比
20
动态代码生成
eval/dlopen/JIT · 编译时注入(AspectJ/宏) · 安全风险
21
语言互操作
FFI声明 · 调用约定适配 · 跨语言类型映射 · JNI/PInvoke
22
并发与同步
锁消除 · 偏向锁/轻量锁 · 内存模型编译时/运行时保证
23
协程与异步
状态机生成(C++20/Python) · 运行时调度 · 栈式vs无栈
24
调试信息与符号
DWARF/PDB · 运行时符号解析 · 断点与单步协同
25
性能剖析与反馈优化
插桩 · profile收集 · PGO回馈 · 自适应优化
26
安全机制
边界检查 · canary · CFI · ASLR编译时支持
27
模块化与增量编译
模块依赖分析 · 运行时加载 · 增量缓存 · 热替换
28
领域特定语言(DSL)的编译时与运行时
DSL编译时展开 · 运行时解释 · 嵌入式DSL优化
29
编译器测试与验证
编译时/运行时断言 · 随机/差分测试 · 回归协同
30
未来趋势
界限模糊(GraalVM/Polyglot) · AI辅助 · 自适应优化 · 硬件协同