翻译环境和运行环境
翻译环境
翻译环境就是在这将源代码转换成可执行的二进制指令(机器指令)。
进行编译和链接过程。
.c源程序先单独经过编译器生成对应的目标文件.obj(在windows环境下).o(在Linux环境下)。
多个目标文件和链接库一起经过链接器生成可执行程序。
编译器
编译器分为3个过程 预处理(预编译),编译,汇编。
预处理(预编译)
主要处理源文件中#开始的预编译指令。
规则如下:
1.将宏定义替换进去并删除#define
2.处理条件编译
3.删除注释
4.将头文件包含内容插入预编译位置。该头文件中可以包含其他头文件(可以递归进行)
5.添加行号和文件名表示,以便后续生成调试信息。
6.保留#pragma的编译指令。
编译
1.词法分析:将代码中的字符分割为一系列记号(关键字,标识符,字面量,特殊字符等)。
2.语法分析:将词法分析产生的记号进行语法分析,产生语法树。
3.语义分析:对表达式的语法层面分析。
链接
过程主要包括:地址和空间分配,符号决议和重定位等步骤。
目的:将一堆文件链接在一起生成可执行文件。
执行环境
执行环境就是用于实际执行代码。