程序环境和预处理

前言:

        学习过此程序怎么写,了解了写程序的语法等等基础知识,现在我们可以深入学习一个程序从写到运行的整个过程究竟是怎么样的。

程序的翻译和执行

        当我们用一些开发环境写代码一直到执行程序,拿VS举例:

第一步:写程序,我们写好程序之后,这些程序会被放在.c的源文件中(如果我们写的是C语言程序)。

源文件:

第二步:这些源文件也就是.c文件会被翻译成机器指令,从C语言到汇编语言,最后到二进制指令,才能被计算机识别并执行。

目标文件(二进制文件):

翻译环境:

预编译:

如下代码:

#include<stdio.h>
#define M 100
//定义M
int main()//主函数
{
	int a = M;
	int b = 19 + M;//加法
	printf("%d", b);
	return 0;
}

如果经过预编译会变成什么样子?

首先会生成一个xxx.i的一个文件。

其次这个文件中有好多代码,有的有几万行代码!

在这些代码的最后,发现是我们写的代码

但是区别是

1、#define定义的常量都被替换了。

2、我们所有的注释内容被直接清空了,被换成了空格

所有操作都是文本操作!!

编译:

        C语言代码被翻译成汇编代码,之后进行:

1、词法分析

2、语法分析

3、语义分析

4、符号汇总

把C语言的每一个符号全部拆解!!!

汇编:

把汇编代码翻译成二进制指令。生成.o文件(目标文件)

操作:

生成符号表!!!!

每个源文件都会生成自己的目标文件,每个目标文件都有一定的格式的。

会按照elf这种文件形式组织的段:

链接:

        链接目标文件和链接库生成可执行程序二进制程序。

操作:

         1、合成段表(上述的每个段表都会合并在一起)

        2、符号表的合并和重新定位(将有效的符号表合并在一起!!)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值