一,编译程序
1,编译程序结构图

2,编译与解释的区别
| 特性 | 编译方式 | 解释方式 |
|---|---|---|
| 处理流程 | 必须完整执行:词法分析 → 语法分析 → 语义分析 → 目标代码生成 | 也会做词法 / 语法 / 语义分析,但不生成目标代码,边分析边执行 |
| 目标代码 | 会生成机器可执行的目标代码(如.exe) |
不生成目标代码,执行时依赖解释器 |
| 中间代码 | 可选,不是必须的(有些简单编译器直接从语义分析生成目标代码) | 一般不生成中间代码 |
| 执行效率 | 一次编译,多次执行,效率高 | 边解释边执行,效率低 |
二,各阶段具体作用
1,词法分析
把源代码拆成一个个 "单词"(标识符、关键字、运算符等)
2,语法分析
检查代码是否符合语法规则,生成语法树
3,语义分析
检查逻辑,类型、变量声明等语义错误,生成中间代码
4,中间代码生成
生成与机器无关的中间表示(如三地址码)
5,目标代码生成
把中间代码翻译成机器指令,寄存器分配(决定哪些变量放在寄存器里,提高访问速度)、指令选择、地址分配
三,其他考点
1,后缀式(逆波兰式)
后缀式 = 操作数在前,运算符在后
运算顺序:先算的,先放后面
括号优先、先乘除后加减,谁先算,谁先拼成后缀。