C语言 程序的翻译环境和运行环境

目录

一、程序环境简介

二、程序的翻译环境

1.翻译环境

2.编译过程

2.1预编译(预处理)

2.2编译

2.3汇编

2.4链接

三、程序的执行环境


一、程序环境简介

        在ANSI C的任何一种实现中,存在两个不同的环境;第一种是翻译环境,在这个环境中源代码被转换为可执行的机器指令;第二种是执行环境,它用于实际执行代码;

二、程序的翻译环境

1.翻译环境

//将多个源文件(.c文件),通过编译器(VS使用的是cl.exe文件)编译成多个对应的目标文件(.obj文件),再将所有目标文件和链接库(头文件等)一起经过链接器(VS使用的是link.exe文件)处理,最后形成可执行程序(.exe文件);

        组成一个程序的每个源文件通过编译过程分别转换成目标代码(ovject code);

        每一个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序;

        链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而其他可以搜索程序员个人的程序库,将其需要的函数也链接到程序中;

2.编译过程

        从代码到可执行程序过程可以分为:编译和链接两个大步骤,而编译又可以分为预编译(预处理)、编译、汇编;即代码->预编译(预处理)->编译->汇编->链接->生成可执行程序;

2.1预编译(预处理)

        所有的预处理指令都是在预处理阶段处理的,预处理阶段处理的内容,包括头文件的包含(#include)、#define定义符号的替换和删除、注释的删除等,这些操作都是文本操作;

2.2编译

        编译阶段编译内容是,将C语言代码转换成汇编代码;

        转换的过程包括:语法分析、词法分析、语义分析、符号汇总;

        符号汇总会将全局符号进行汇总,包括全局变量名、函数名、main等。

2.3汇编

        汇编阶段汇编的内容,是将汇编代码转换为二进制指令;将编译过程中汇总的符号进行整合并、编排地址,形成符号表;

2.4链接

        链接包括合并段表和符号表合并及重定位;符号表使得程序可以跨文件找到代码;

三、程序的执行环境

//程序执行的过程:

        1.程序必须载入内存中。在有操作系统的环境中:一般由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成;

        2.程序执行并载入内存后,调用main函数;

        3.开始执行程序代码。这时程序将使用一个运行时堆栈(stack),储存函数的局部变量和返回地址。程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程一直保留他们的值;

        4.终止程序。正常终止main函数;也可能意外终止;

(-- end --)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值