程序的编译

本文详细介绍了从源代码到可执行文件的编译过程,包括预处理、编译、汇编和链接四个阶段,阐述了每个阶段的作用和具体步骤。在运行环境部分,解释了程序载入内存、调用main函数以及执行过程。此外,还讨论了计算机如何识别二进制文件以及程序执行的基本流程。
摘要由CSDN通过智能技术生成

目录

编译

预处理作用:

编译:

汇编

链接

运行环境


计算机只能识别的文件是二进制文件

怎样将我们编写的源文件翻译为系统能够识别的二进制文件

源文件到目标文件的编译过程包括预编译、编译与汇编,统称为编译过程

编译

预处理作用:

1.删除注释:  删除编译过程中的各种注释

2.宏替换将#define定义的符号进行替换

3.文件包含:#include 是一种最为常见的预处理,主要是做为文件的引用组合源程序正文。

编译:

作用:将C语言代码转换成汇编代码

具体要进行:
1.语法分析

2.词法分析

3.语义分析

4.符号汇总

汇编

将汇编代码转换成二进制指令

目的:形成符号表

链接

将编译过程中的目标文件与链接库进行连接形成最终的可执行文件

1.合并链表

2.符号表的合并和重定位

运行环境

程序执行的过程:

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

2.程序的执行便开始。接着便调用main函数。

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

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值