【C语言】浅析编译原理

 

致读者:

提到“编译原理”,大部分人的首要反应就是苦恼。确实,编译原理这一部分的内容在计算机学习中是比较难以理解的一部分。首次接触编译原理,我也感觉很复杂,难以理解。但是当看过几次之后,对于一些简单知识点的理解就有点眉目了。在这里就将有点眉目的知识写一下。

编译原理:

要了解编译原理,首先,我们一起来来看看一个程序具体的编译过程吧。

综上可见:

● 组成一个程序的每个源文件通过编译过程分别转换为目标代码。

● 每个目标文件由链接器捆绑在一起,同时引入标准C函数库中任何被该程序所用到的函数,当然也可以搜索到个人工作目录路径下的库函数。

详解---编译+链接:

了解了整个程序编译过程后,然后我们就来看一个源文件如何具体被编译成目标可执行文件的吧。

综上可知:

程序在运行过程中要经过两个环境:翻译环境,执行环境。

翻译环境:源代码转换为机器指令。

执行环境:用于实际执行代码。

编译具体步骤如下:

综上可知;一个源文件经过编译过程也是相当复杂的,其中涉及的几个步骤:

结合linux系统叙述:

1.预处理 选项 gcc -E test.c -o test.c

预处理完成就停下来,产生结果放在test.i文件中。

2.编译 选项 gcc -S test.c

编译完成之后就停下来,结果保存在test.s中。

3.编译 gcc -C test.c

汇编完成之后就停下来,结果保存在test.o中。

运行环境:

程序执行过程:

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

● 程序的执行便开始。接着调用main()函数。

● 开始执行程序代码。这个时候程序将使用一个运行时堆栈,存储函数的局部变量,函数参数,返回数据和返回的地址。同时也可以使用静态内存,存储于静态内存中的变量在程序的整个运行过程中一直保留它们的值。

● 终止程序。正常终止main函数,也可能会中途意外终止。

 

以上简单介绍程序编译过程,如有不正之处,欢迎各位来跟小编一起讨论!

参考博客:https://blog.csdn.net/hgyan25/article/details/79789788

  • 12
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农印象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值