2.1 被隐藏了的过程
- 一般一个hello world程序主要可以分为4个步骤:
- 预处理,处理其中的一些宏等信息
- 编译, 将预处理完的文件进行词法分析,语法分析,语义分析以及优化之后生成相应的汇编代码文件
- 汇编, 将汇编代码转化为机器码
- 链接,将程序运行所需要的各个模块整合起来
2.2 编译器做了什么
- 词法分析 lex
- 语法分析 yacc
- 语义分析 生成语法树
- 中间语言生成 将语法树转化为 三地址码
- 目标代码生成于优化
2.3 连接器年龄比编译器长
- 重定位: 重新计算各个目标的地址的过程
2.4 模块拼接–静态链接
- 链接的过程主要包括 地址和空间分配, 符号决议 和 重定位这些步骤
- 编译的时候, 一般将一些外部函数的目标地址先搁置, 然后在链接的时候, 冲过重定位修正这些函数入口地址