编译和链接
- 预处理
- 编译
扫描(词法分析)、语法分析、语义分析(静态语义是编译器所能分析的,动态语义要在运行期才能确定)、源代码优化(中间代码、三地址码、P-代码)、代码生成和目标代码优化 - 汇编
- 链接
地址和空间分配、符号决议(符号绑定、名称绑定等)、重定位(重新计算各个目标的地址过程,比如对函数编译之后变为了新的地址,链接器把指令的目标地址调整为新的地址)。目标文件(.obj或.o)和库一起链接形成最终可执行文件。
库
- 库是一组目标文件的包,就是一些最常用的代码编译成目标文件后,打包存放。
- 最常见的库是运行时库,它支持程序运行的基本函数的集合。
语言的发展过程:
- 机器语言(从纸带打孔开始)
- 汇编语言(从用符号记录地址开始,符号这个概念是用来表示一个地址的,这个地址可能是一段子程序(后来发展成了函数)的起始地址,也可能是一个变量的起始地址。)
- 把代码按功能或性质分类,形成了功能模块(因为软件的规模越来越大,为了便于修改和重复使用),比如若干变量和函数组成一个模块,存放在源代码文件里;Java中的每个类是一个基本的模块,若干模块组成一个包,若干个包组合成一个程序。