1、编译程序分为哪几个主要部分?
1、词法分析 词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。
2、语法分析 编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。
3、中间代码生成 中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。中间代码即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。
4、代码优化 代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。
5、目标代码生成 目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。
2、操作系统都自带编译器吗?如Windows?
不一定。例如:Windows 操作系统就是不自带编译器的,它是一个独立的操作系统,如果你需要编程的话,你还需要单独购买 MS Visual C++编译器,然后在安装好 Windows系统的前提下面,再安装运行 MS VC++,此时 VC++才能够对你编写的 C 语言源程序进行编译、连接,最后产生可执行程序;而Linux则不同,它是自带编译器 gcc 的,所以你在安装 Linux系统时,只要把 gcc 选上,就可以把 gcc 编译器连同 Linux 操作系统一起安装好。就不需要单独购买 gcc 编译器软件了。
3、计算机编译程序的功能是什么?
编译程序、解释程序均是计算机语言处理程序。其区别主要为:解释程序直接执行源程序或源程序的内部形式,一般是读一句源程序,翻译一句,执行一句,不产生目标代码,如BASIC解释程序。
编译程序是将高级语言书写的源程序翻译成与之等价的低级语言的目标程序。
编译程序与解释程序最大的区别之一在于前者生成目标代码,而后者不生成;此外,前者产生的目标代码的执行速度比解释程序的执行速度要快;后者人机交互好,适于初学者使用。
4、高级语言程序的两种执行方式是什么?
编译执行:把源程序翻译成机器语言(生成可执行文件,比如com或exe文件),然后 执行。(包含汇编和链接两个过程)
解释执行:把一行源程序翻译成机器语言,然后执行;再翻译下一行源程序成机 器语言,然后执行。(翻译一句,执行一次。不生成可执行文件)
5、为什么我写的C语言程序编译时没错,运行时有错误?
建议你下断点,然后反复调试运行,肯定能找出问题所在。
我一遇到次类问题,都是这样解决的。
文章来自网络整理,侵权请联系删除.本文链接:https://www.vanillaforums.cn/n/5245.html