C语言 程序环境

目录

一、程序的翻译环境和执行环境

二、编译+链接

1.翻译环境

2.编译

3.运行环境


一、程序的翻译环境和执行环境

ANSI C 的任何一种实现中,存在两个不同的环境。
1 种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。
2 种是执行环境,它用于实际执行代码。
test.c            ---------------> test.exe
源程序 翻译环境(编译器) 可执行文件

二、编译+链接

集成开发环境--IDE

集成了

编辑 编译 链接 调试

比如:VS2019

C++

DEV

CLION

1.翻译环境

C语言 程序环境_第1张图片

 

组成一个程序的每个源文件通过编译过程分别转换成目标代码( object code )。
每个目标文件由链接器( linker )捆绑在一起,形成一个单一而完整的可执行程序。
链接器同时也会引入标准 C 函数库中任何被该程序所用到的函数,而且它可以搜索程序员个人的程序库, 将其需要的函数也链接到程序中

2.编译

test.c 编译 链接 test.exe

预编译

(预处理)

编译 汇编 链接

预编译

1.头文件的包含

2.定义符号的替换

#define   预处理指令

3.注释删除

编辑

把C语言代码翻译为汇编代码

1.语法分析

2.词法分析

3.语义分析

4.符号汇总

汇编

把汇编指令翻译为二进制的指令

作用:形成符号表

链接

1.合并段表

2.符号表的合并和定位

这个过程要在虚拟机上展示运行,此处不做展示,按照下面指令即可

1. 预处理 选项 gcc - E test.c - o test.i 预处理完成之后就停下来,预处理之后产生的结果都放在 test.i 文件
中。
2. 编译 选项 gcc - S test.c 编译完成之后就停下来,结果保存在 test.s 中。
3. 汇编 gcc - c test.c 汇编完成之后就停下来,结果保存在 test.o

3.运行环境

程序执行的过程:
1. 程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。
2. 程序的执行便开始。接着便调用 main 函数。
3. 开始执行程序代码。这个时候程序将使用一个运行时堆栈( stack ),存储函数的局部变量和返回地址。程序同时也可以使用静态(static )内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值。
4. 终止程序。正常终止 main 函数;也有可能是意外终止

你可能感兴趣的:(C语言,c语言)