编译流程总览
一份源代码从字符流到目标代码,要经过哪些阶段?先建立整体地图,再逐个深入。
一份源代码从字符流到目标代码,要经过哪些阶段?先建立整体地图,再逐个深入。
1. 前端 vs 后端
编译器通常分为前端(与源语言相关)和后端(与目标机器相关),中间用一层 IR(中间表示)解耦。
源代码 → 词法分析 → 语法分析 → 语义分析 → 中间代码 → 优化 → 目标代码
└────────── 前端 ──────────┘ └──── 后端 ────┘
2. 各阶段职责
- 词法分析:把字符流切成 token
- 语法分析:按文法构建语法树
- 语义分析:类型检查、符号表
- 代码生成:IR → 汇编 / 机器码
💡
建立直觉:前端关心「程序说了什么」,后端关心「机器怎么做」,IR 是两者之间的通用语。