翻译环境,在这个环境中源代码被转换为可执行的机器指令。
执行环境,用于实际执行代码。
例如 test.c 经过翻译环境-> test.exe 经过运行环境 -运行
在翻译环境中 – 编译(编译器),链接(链接器)
编译又分为三个阶段-- 预处理(预编译),编译, 汇编
翻译环境
编译
预处理(预编译)
预处理阶段进行一些文本操作 生成了.i文件
注释的删除,注释被替换成空格
头文件的包含
#define等预处理指令的替换
编译
把C语言代码翻译成汇编代码 生成了.s文件
词法分析 语法分析 语义分析 符号汇总
汇编
把汇编代码翻译成二进制的指令 生成了.o文件
生成符号表
链接
链接目标文件和链接库生成可执行二进制的程序
合并段表 符号表的合并和符号表的重定位
运行环境
在执行阶段,程序的机器代码被加载到计算机的内存中,并由操作系统的执行环境负责执行。执行环境会为程序提供必要的资源,如内存空间、处理器时间和输入输出设备等。
开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack),存储函数的局部变量和返回地址。程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值。