购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 编译的概念和理解

在进行C程序开发时,编译就是将所编写的C语言代码变成可执行程序的过程,这一过程是由编译器来完成的。编译器就是完成程序编译工作的软件,在进行程序编译时完成一系列复杂的过程。

4.1.1 程序编译的过程

在执行这一操作时,程序完成了复杂的过程。一个程序的编译,需要完成词法分析、语法分析、中间代码生成、代码优化、目标代码生成。本章将讲解这些步骤的作用与原理。

①词法分析。词法分析指的是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个单词符号,然后把字符串的源程序改造成单词符号串的中间程序。在编译程序时,这一过程是自动完成的。编译程序会对代码的每个单词进行检查,如果单词发生错误,编译过程就会停止并显示错误,这时需要对程序中的错误进行修改。

②语法分析。语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语句。例如,需要检查表达式、赋值、循环等结构是否完整和符合使用规则。在语法分析时,会分析出程序中错误的语句,并显示出结果。如果语法发生错误,编译任务是不能完成的。

③中间代码生成。中间代码是源程序的一种内部表示,或称中间语言。程序进行词法分析和语法分析以后,将程序转换成中间代码,这一转换的作用是使程序的结构更加简单和规范。中间代码生成操作是一个中间过程,与用户无关。

④代码优化。代码优化是指对程序进行多种等价变换,使得变换后的程序能生成更有效的目标代码。用户可以在编译程序时设置代码优化的参数,可以针对不同的环境和设置进行优化。

⑤目标代码生成。目标代码生成指的是产生可以执行的应用程序,这是编译的最后一个步骤。生成的程序是二进制形式的机器语言,用户只能运行这个程序,而不能打开这个文件查看程序的代码。

4.1.2 编译器

所谓编译器,是指将所编写的程序代码转换成计算机可以运行的程序软件。在进行C程序开发时,编写的代码是源程序代码,是不能直接运行的,需要用编译器编译成可以运行的二进制程序。

不同的操作系统下有不同的编译器。C程序是可以跨平台运行的,但并不是说Windows系统下C语言编写的程序可以直接在Linux系统下运行。在Windows系统下使用C语言编写的程序,被编译成exe文件。这样的程序只能在Windows系统下运行。如果需要在Linux系统下运行,需要将这个程序的源代码在Linux系统下重新编译。Linux系统下编译生成的程序是不能在Windows系统下运行的。 kp5tlopcroLP7pxeaxhcDO9fKqJPeysU72mHec0rM6e5Q2qZ/0gZ8Vx1gT3FF0rA

点击中间区域
呼出菜单
上一章
目录
下一章
×