C语言程序从源文件到可执行文件的过程以及从键盘按下字符到它出现在显示器的过程

一段C语言程序从源文件到可执行文件的中间环节

预处理:
1、宏定义指令:对用到宏定义的地方用其指代的具体内容进行替换。
2、条件编译指令:对类似于#ifdef,#ifndef,#else,#elif,#endif的条件编译指令,跳过在条件判断中不需要编译的部分,把不必要的代码过滤。
3、头文件包含指令:预编译程序将把头文件中的定义都加入到它所产生的输出文件中,以供编译程序对之进行处理。在这个操作后文件的行数和大小就会变大。
预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同,文件的体积也大大增加了。经过这个环节,可以把.c文件转化为.i文件。
编译:
编译环节做的事情是把C语言转化为汇编语言。其中包括词法分析、语法分析、语义分析、代码优化等环节。编译这个过程把.i文件转化为了.s文件,输出的是汇编语言。
汇编:
汇编环节做的事情是把汇编语言代码翻译成目标机器指令,得到目标文件,其中存放机器语言代码。目标文件一般由代码段和数据段组成,代码段存放程序指令,数据段存放全局变量或静态数据。汇编这个过程把.s文件转化为了.o文件。
链接:
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够在操作系统装入执行的统一整体。链接包括静态链接和动态链接两种,静态链接文件是目标文件的集合,它具有完整的代码,可以独立运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值