1 / 9
文档名称:

C、C++语言语言编译过程总结详解.pdf

格式:pdf   大小:340KB   页数:9页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C、C++语言语言编译过程总结详解.pdf

上传人:文库旗舰店 2022/5/24 文件大小:340 KB

下载得到文件列表

C、C++语言语言编译过程总结详解.pdf

文档介绍

文档介绍:C 语言编译过程总结详解

从图上可以看到,整个代码的编译过程分为编译和链接两个过
程,编译对应图中的大括号括起的部分,其余则为链接过程。
编译过程
编译过程又可以分成两个阶段:编译和会器的硬件环境也有很大的关系。优
化一部分是对中间代码的优化。这种优化不依赖于具体的计算机。另
一种优化则主要针对目标代码的生成而进行的。
对于前一种优化,主要的工作是删除公共表达式、循环优化(代
码外提、强度削弱、变换循环控制条件、已知量的合并等)、复写传
播,以及无用赋值的删除,等等。
后一种类型的优化同机器的硬件结构密切相关,最主要的是考虑
是如何充分利用机器的各个硬件寄存器存放的有关变量的值,以减少
对于内存的访问次数。另外,如何根据机器硬件执行指令的特点(如
流水线、RISC、CISC、VLIW 等)而对指令进行一些调整使目标代
码比较短,执行的效率比较高,也是一个重要的研究课题。
汇编
汇编实际上指把汇编语言代码翻译成目标机器指令的过程。对于
被翻译系统处理的每一个 C 语言源程序,都将最终经过这一处理而
4得到相应的目标文件。目标文件中所存放的也就是与源程序等效的目
标的机器语言代码。目标文件由段组成。通常一个目标文件中至少有
两个段:
代码段:该段中所包含的主要是程序的指令。该段一般是可读和
可执行的,但一般却不可写。
数据段:主要存放程序中要用到的各种全局变量或静态的数据。
一般数据段都是可读,可写,可执行的。
UNIX 环境下主要有三种类型的目标文件:
(1)可重定位文件
其中包含有适合于其它目标文件链接来创建一个可执行的或者
共享的目标文件的代码和数据。
(2)共享的目标文件
这种文件存放了适合于在两种上下文里链接的代码和数据。第一
种是链接程序可把它与其它可重定位文件及共享的目标文件一起处
理来创建另一个 目标文件;第二种是动态链接程序将它与另一个可
执行文件及其它的共享目标文件结合到一起,创建一个进程映象。
(3)可执行文件
它包含了一个可以被操作系统创建一个进程来执行之的文件。汇
编程序生成的实际上是第一种类型的目标文件。对于后两种还需要其
他的一些处理方能得到,这个就是链接程序的工作了。
5链接过程
由汇编程序生成的目标文件并不能立即就被执行,其中可能还有
许多没有解决的问题。
例如,某个源文件中的函数可能引用了另一个源文件中定义的某
个符号(如变量或者函数调用等);在程序中可能调用了某个库文件
中的函数,等等。所有的这些问题,都需要经链接程序的处理方能得
以解决。
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将