c语言程序的语句经过编译和链接,用c语言编写的源程序文件经过编译连接

  c语言程序的语句经过编译和链接,用c语言编写的源程序文件经过编译连接

  第一个是翻译环境,在这个环境中,源代码被转换成可执行的机器指令。

  第二个是执行环境,用于实际执行代码。

  下图显示了我们的编译器将源文件编译成可执行文件的一般过程。

  构成程序的每个源文件(test.c)通过编译过程被转换成目标代码(test.obj)。

  每个目标文件都被一个链接器连接在一起,形成一个完整的可执行程序。

  同时,链接器会在标准C函数库中引入程序使用的任何函数。

  对于要成为最终二进制文件(test.exe)的源文件(test.c ),可以简单地用下图表示:

  看图,我们知道编译分为三个步骤:

  预编译(预处理)(test.c - test.i)

  (1)处理所有评论,用空格代替。

  (2)删除所有#define,展开所有宏定义。

  (3)处理条件编译指令#if、#ifdef、#elif、#else、#endif

  (4) Process #include并扩展包含的文件。

  (5)保留编译器需要使用的#pragma指令。

  编译(测试. i -测试. s)

  (1)将C语言代码编译成汇编代码

  (2)语法分析、词法分析、语义分析、符号汇总形成符号表。

  编译(test.s - test.o)

  汇编过程实际上是指将汇编语言代码翻译成目标机器指令的过程。对于翻译系统处理的每一个C语言源程序,都会通过这个处理最终得到对应的目标文件。目标文件中存储的是相当于源程序的目标的机器语言代码。

  编译后,执行链接。链接会做什么?

  符号表的合并和重新定位

  最终形成(test.exe)

  二、程序的运行环境

  在有操作系统的环境中,程序必须装入内存:一般来说,这是由操作系统完成的。在独立的环境中,程序的装入必须手动安排,或者可以通过将可执行代码放入只读存储器来完成。

  程序开始执行,然后调用主函数。

  开始执行程序代码。此时,程序将使用一个运行时堆栈来存储局部变量和函数的返回地址。程序也使用静态内存,存储在静态内存中的变量在整个程序执行过程中保持它们的值。

  终止程序。正常或意外终止主函数(代码错误)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: