问题描述:
编译程序就是将高级语言翻译成机器语言,比如VC,VB这一类工具。
像一个VBmini,也就有4,5M,能将这么多语言翻译成0和1的组合吗?
这些编译工具在工作的时候要不要用到 *** 作系统中的其它资源?
解析:
很显然不是的.编译程序实际上分为分析器,编译器,连接器等.分析器里面又分为词法分析和语法分析.词法分析就是将源程序里的关键字,变量等等的东西解析出来,通俗点说就是把一个英语句子中的单词分析出来.而语法解析则是从语法的角度来看看源程序是否存在语法错误.真正将高级语言变为一系列0和1的东西是连接器,将N多的obj文件编译为可以执行的exe.当然在这之前还要有编译程序来编译目标文件.现在的开发工具如VC,VB实际上是分析器+编译器+连接器+调试工具的 *** .另外,如果你的程序要进行系统调用的话,比如socket程序的通讯.那么需要和 *** 作系统的资源打交道.实际上所有的IO *** 作,内存读写等等都要进行系统调用.哪怕是一个简单的hello world!
编译程序的作用是:将高级语言源程序翻译成目标程序。
编译程序是一种动作,是根据编译原理技术,由高级程序设计语言编译器翻译成机器语言二进制代码行为。编译程序是动名词,特指生成编译器的软件程序。编译程序是把用高级程序设计语言或计算机汇编语言写的源程序,翻译成机器语言格式目标程序的翻译程序。
属于采用生成性实现途径实现的翻译程序。编译程序以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出;编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。
编译程序的算法
编译程序的实现算法较为复杂。这是因为它所翻译的语句与目标语言的指令不是一一对应关系,而是一多对应关系;同时也因为它要处理递归调用、动态存储分配、多种数据类型,以及语句间的紧密依赖关系。
但是,由于高级程序设计语言书写的程序具有易读、易移植和表达能力强等特点,编译程序广泛地用于翻译规模较大、复杂性较高、且需要高效运行的高级语言书写的源程序。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)