一,翻译环境
在 ANSI C 的任何一种实现中,存在两个不同的环境,一种是 翻译环境 ,还有一种是 运行环境 (用于实际运行代码)。这两个环境是先后实现的。
1,翻译环境是什么
"翻译环境" 通常指的是计算机编程中用于将源代码翻译成可执行程序的工作环境。这个环境包括编程语言的编译器或解释器、开发工具、库文件、操作系统等组成部分。在这个环境中,源代码被转换为可执行的机器指令(二进制指令)。
2,翻译环境的工作
翻译环境由 编译 和 链接 两个大的过程组成的,而 编译 又可以分解为三个部分:
- 预处理(Preprocessing):预处理器会执行以 # 号开头的指令,比如
#include
和#define
,并且执行条件编译(#ifdef
、#ifndef
等)。预处理的结果是生成一个经过预处理的源代码文件(后缀为 .i)。 - 编译(Compilation):编译器将经过预处理的源代码转化为汇编语言或机器代码,这个过程就是将高级语言转化为低级语言的过程,编译后生成一个中间文件(后缀为 .s )。
- 汇编(Assembly):汇编器将汇编语言代码转化为二进制机器代码,并将其保存在目标文件中(后缀为 .o 或 .obj)。
然后接下来就是 链接 ,链接是将多个目标文件和库文件合并成一个可执行程序的过程。它可以分为三个步骤:
- 链接器(Linker):链接器将不同目标文件中的函数和变量连接在一起。它解析符号引用,确保它们指向正确的位置。
- 库文件(Library Files): 链接器可以使用库文件,这些文件包含了已编译的函数和数据,可以在多个程序中共享。
- 可执行文件(Executable):链接完成后,生成一个可执行程序(.exe),通常是一个二进制可执行文件。这是一个完整的程序,可以在计算机上运行。
二,运行环境
1,运行环境是什么
运行环境是指程序或应用程序在计算机上执行时所需的软件和硬件环境。它包括操作系统、库文件、硬件设备和其他资源,这些资源共同支持程序的执行。不同类型的程序可能需要不同的运行环境。
2,运行环境的工作:
- 程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。
- 程序的执行便开始。接着便调用main函数。
- 开始执行程序代码。这个时候程序将使用一个运行时堆 栈 (stack),存储函数的局部变量和返回地址。程序同时也可以使用静态( static )内存,存储于静内存中的变量在程序的整个执行过程一直保留他们的值。
- 终止程序。正常终止main函数;也有可能是意外终止。