首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编译程序的任务

编译程序是一种翻译程序,编译程序是将一种语言形式翻译成另一种语言形式。它将高级语言所写的源程序翻译成等价的机器语言或汇编语言的目标程序。...大部分程序设计语言的规范没有规定编译程序应该如何处理错误;错误处理方法由编译程序的设计者决定。 因此,从一开始就计划好如何进行错误处理,不仅可以简化编译程序的结构,还可以改进错误处理方法。...一个好的编译程序在编译过程中, 应具有广泛的程序查错能力,并能准确地报告错误的种类及出错位置,以便用户查找和纠正,因此在编译程序中还必须有一个出错处理程序。...例如,可以将前述 5 个阶段的工作结合在一起,对源程序从头到尾扫描一遍来完成编译的各项工作,这种编译程序称为一遍扫描的编译程序。...多遍扫描的编译程序较一遍扫描的编译程序少占存储空间,遍数多一些,可使各遍所要完成的功能独立而单纯,其编译程序逻辑结构清晰,但遍数多势必增加输入输出开销,这将降低编译效率。

21320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PL0语言编译程序分析

    PL/0语言是Pascal语言的一个子集,我们这里分析的PL/0的编译程序包括了对PL/0语言源程序进行分析处理、编译生成类PCODE代码,并在虚拟机上解释运行生成的类PCODE代码的功能。   ...PL/0语言编译程序采用以语法分析为核心、一遍扫描的编译方法。词法分析和代码生成作为独立的子程序供语法分析程序调用。语法分析的同时,提供了出错报告和出错恢复的功能。...因此,本编译程序在运行的时候,通过主程序中调用分程序处理过程block来分析分程序部分(分程序分析过程中还可能会递归调用block过程),然后,判断最后读入的符号是否为句号。...下面按各语法单元分析PL/0编译程序的运行机制。   分程序处理过程:   语法分析开始后,首先调用分程序处理过程(block)处理分程序。

    1.7K50

    第二十四章 : 编译程序

    编译程序 In this chapter, we will look at how to build programs by compiling source code.The availability...尽管系统发行版仓库中已经包含了大量的预编译程序,但是一些发行版本不可能包含所有期望的应用。在这种情况下,得到所期望程序的唯一方式是编译程序源码。 及时性。...通常来说,解释型程序执行起来要比编译程序慢很多。...对于许多编程任务来说,原因是“足够快”,但是真正的优势是一般来说开发解释型程序要比编译程序快速且容易。通常程序开发需要经历一个不断重复的写码、编译和测试周期。...如果是这样的话,若你打算在你的系统中编译程序就考虑安装它。若你的系统没有提供一个 meta-package,试着安装 gcc 和 make 工具包。在许多发行版中,这就足够完成下面的练习了。

    24210

    编译原理 第一章: 编译概述 重点总结(翻译程序的过程,解释程序,编译程序的结构)

    1.2 解释程序有一种高级语言翻译程序(编译程序) ,从源程序的编译到执行只有一个阶段-解释执行阶段,同时处理源程序和数据。这种翻译程序叫解释程序。...1.4 编译程序的结构1.4.1 单遍编译程序单遍编译程序只对源程序进行一遍扫描。往往以==语法分析程序==为中心。单遍编译程序,产生目标代码,但不产生中间代码。...1.4.2 多遍编译程序多遍编译程序,每遍只完成部分任务。...1.4.3 编译程序分遍的优缺点编译程序分为多遍的优点如下::one:可以减少内存容量的需求:two:可使各遍的编译程序相互独立,结构清晰:three:可以编译程序分为“前端”和“后端”,有利于编译程序的移植...前端是在分析阶段后端主要与目标机器有关,包括代码优化,目标代码生成等后端在综合阶段“端”的优点:便于移植和编译程序的构建习题部分M种高级语言程序,N类目标机器,编译程序分为前后端和不分情况下,各需多少种编译程序

    14310

    编译原理(1)总结

    一、什么是编译程序   为了了解什么是编译程序,首先了解下翻译程序是什么: 把某一种语言程序(称为源语言程序)等价地转换为另一种语言程序(目标语言程序)的程序。...编译程序还有以下分类: 诊断编译程序(Diagnostic Complier,帮助程序员排错) 优化编译程序(Optimizing Complier,提高目标代码执行效率) 交叉编译程序(Cross Complier...) 两个概念: 宿主机(运行编译程序的机器) 目标机(运行目标源程序的机器) 一般来说,宿主机和目标机是同一类型机器,如果不同,则叫做交叉编译程序,如在Windwos交叉编译可在Linux上运行的程序...三、编译过程   编译程序是怎样把高级语言(如C++)翻译成低级语言的(如机器指令)的?...原则:依赖于硬件系统结构和机器中指令的具体含义   目标代码三种形式 汇编指定代码:需要进行汇编 绝对指定代码:可直接运行 可重定位指令代码:需要链接 四、编译程序的结构 编译程序结构.png 五、编译程序的开发

    41811

    什么时候应该使用volatile

    volatile 修饰符告诉编译程序不要对该变量所参与的操作进行某些优化。...好的编译程序能进行一种被称为“冗余装入和存储的删去”(redundant load and store removal)的优化,即编译程序会·在程序中寻找并删去这样两类代码:一类是可以删去的从内存装入数据的指令...如果不使用volatile 修饰符,一个聪明的编译程序可能就会认为t->value 在该函数执行期间不会改变,因为该函数内没有明确地改变t->value 的语句。...这样,编译程序就会认为没有必要再次从内存中读入t->value 并将其减去then,因为答案永远是0。因此,编译程序可能会对该函数进行“优化”,结果使得该函数的返回值永远是0。...如果从共享内存装入数据或把数据存入共享内存的代码被编译程序优化掉了,程序之间的通讯就会受到影响。

    2.1K30
    领券