1、编译环境和运行环境
在ANSI C的任何一种实现中,存在两个不同的环境:
第一种:翻译环境,在这个环境下,源代码被转换为可执行的机器指令(二进制指令);
第二种:执行环境,它用于实际执行代码。
2、翻译环境
翻译环境是由编译和链接两个大的过程组成的,而编译又可以分解为:预处理(预编 译)、编译、汇编三个过程。
2.1、预处理(预编译)
在预处理阶段,源文件(.c)和头文件(.h)会被处理成为 .i 的文件。
命令:
2.2、编译
编译的过程就是将预处理后的文件进行一系列:词法分析、语法分析、语义分析及优化,生 成相应的汇编代码文件。
命令:
例子分析:
(1)词法分析
将源代码程序被输入扫描仪,扫描仪的任务是简单的进行词法分析,把代码中的字符分割 成一系列的记号(关键词、标识符、字面量、特殊字符等)。
16个字符:
(2)语法分析
语法分析器是对扫描产生的记号进行语法分析,从而产生语法树,这些语法树是以表达式 为节点的数。
(3)语义分析
语义分析器来完成语义分析,即对表达式的语法层面分析。编译器所能做的分析是语义的静 态分析。静态语义分析通常包括声明和类型的匹配,类型的转换等。
2.3、汇编
汇编器是将汇编代码转变成机器可执行代码(二进制指令),每一个汇编语句几乎都对应一条机器指令。
命令:
2.4、链接
链接的过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。
链接解决的是一个项目中多文件、多模块之间相互调用的问题。
3、运行环境
多多指教啦!!