浅析编译原理中编译工作的基本流程及其实现

来源 :中国新通信 | 被引量 : 0次 | 上传用户:qq123287
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】    编译原理是研究如何将各种编程语言转换为机器语言的一门科学。本文主要介绍了编译原理中编译工作的基本流程,以及各个流程在整个编译工作过程中起到的作用,同时本文对编译工作在实际的应用中是如何实现的这一问题进行了探讨。
  【关键词】    编译技术    机器语言    词法分析    语法分析
  一、编译技术的产生
  最早期的计算机编程是用机器语言编程,这种直接跟计算机硬件进行信息沟通的方式有很大的局限性。虽然机器语言能够被计算机硬件直接识别并执行,具有灵活速度快的特点,但是机器语言对编程人员的要求门槛太高,它不容易被理解接受,并且记忆困难,极易出错。编程人员使用机器语言编程往往要花费大量的时间和精力在编写程序上,这大大影响了编程效率。为了提高程序的编写效率,增强程序的可读性,汇编语言和高级语言随着科技的发展渐渐出现。汇编语言较为基础,是高级语言形成过程中的中间产物。高级语言封装性更强,在操作上更加简便,在编写和理解上也有更好的可读性。高级语言和汇编语言都需要进行加工才能被计算机识别,这就需要一个能将这些指令转化成机器指令的翻译程序——编译器。因为计算机能够识别的只有二进制代码,如何让计算机识别并执行这些语言呢,这就是编译原理所要研究的问题。
  二、编译的基本流程
  (一)词法分析阶段。首先是词法分析阶段。在词法分析阶段中源程序按照从左到右的顺序被依次扫描,扫描过程中源程序的字符流会按照规定好的构词规则被识别成单词符号,这一工作由词法分析程序完成。此外,在词法分析阶段,词法分析器除了能完成单词符号的识别工作,还能够对程序中的一些信息进行过滤,同时詞法分析程序可以将编译时产生的错误信息对应到源程序的具体位置,便于程序修改。(二)语法分析阶段。在语法分析阶段,语法分析程序会将词法分析中产生的单词序列划分成各类语法短语,并对源程序的结构进行正确性的判断,检查源程序中是否存在语法错误。根据语法分析中采用的方法的不同,语法分析在具体实现时又分为好多方法,其中每一种方法都有各自的适用情况和特点。(三)语义分析和中间代码产生阶段。在语义分析和中间代码生成阶段中,首先要进行的是语义分析工作。顾名思义语义分析主要进行语义审查,编译器会审查程序中语法结构的静态语义。程序中可能存在一些语法正确但是在规定限制下没有意义的语句。语义分析的分析范围有确定类型、类型检查等。在完成语义分析并且分析无误后,进入中间代码产生阶段,生成中间代码,根据实际情况的不同中间代码又分为逆波兰式、三元式、四元式等形式,这些都是在具体程序内部涉及到的内容。(四)优化。所谓中间代码优化指的是在不改变源程序运行结果的前提下,对中间代码或目标代码进行等价替换。优化后所产生的目标代码运行时间更短,占用空间更小、效率更加高效。在整个编译过程中都可以增加优化过程,但最突出的还是体现在中间代码的优化上。(五)目标代码生成。目标代码生成是编译的最后一个阶段,在这一阶段中,主要完成的任务是将前面产生的中间代码转化成特定机器上的机器语言或汇编语言。因为计算机只能识别机器语言,如果生成的目标代码是汇编语言的形式,要将汇编代码再转化成机器代码才能让计算机运行。
  三、编译的实现
  (一)预处理。预处理是指在对源程序进行编译之前,要对程序中的一些特殊命令进行处理的工作。c语言中,编译预处理命令以#开头,这些预处理的命令被预处理程序处理替换后由编译程序进行进一步加工。以c语言为例,编译预处理有宏定义、文件包含、条件编译等,程序人员编写的*.c源程序文件经过预处理程序处理后,随后进入编译程序进行编译最后生成目标程序*.obj。编译预处理完成了标识符的替代工作,为编译的顺利进行打下基础。(二)编译。在编译阶段中对经过了预处理的源文件进行一连串的编译工作,包括词法分析,语法分析,语义分析以及优化等操作,最后生成相应的汇编代码。编译是通过编译器实现的,在编译器中会进行上述一系列的操作。(三)汇编。汇编工作由汇编器实现,汇编器负责汇编代码向机器代码的转化工作,根据汇编指令和机器指令的对应关系表,将汇编代码转化成可执行文件,只有转化成计算机能够识别的二进制代码,才可以交给计算机执行。(四)链接。最后就是链接操作,虽然在汇编阶段源程序已经转化成了计算机能够识别的二进制代码的形式,但是还要完成一些其他工作。因为在源程序中可能引用了其他头文件中的函数,或者调用了其他库中已有的函数,只有将这些全部链接在一起,才能保证程序的正确执行,这就是链接操作。很多时候开发人员不用自己去实现一些函数,而可以直接调用现有库中的函数,既节省了时间,又可以减小出错率。链接技术的实现大大降低了代码的复写率,提高了程序的开发效率。
  结语:编译技术像是在高级语言和计算机硬件系统之间架起了一座桥梁,它将高级语言进行编译处理使其能够在计算机上执行。自从有了编译技术,程序编写的效率明显提升,计算机编程的门槛大大降低,使得更多的学者能够投身于计算机编程领域。可以说编译技术是计算机领域中的核心技术,研究编译技术对计算机技术的发展有着重要意义。
  参  考  文  献
  [1]徐红,陆红阳.编译原理实验动态演示系统的设计与实现[J].电脑知识与技术,2005(27):86-88.
其他文献
【摘要】 平面设计对学生综合素质提出的要求相对较多,学生不仅要实现具备一定的软件操作能力,还要具备良好的创新思维。对此,为了促进学生技术能力,以及创造力的显著提升,其教师应结合不同阶段的实际需求,积极探索、尝试翻转课堂等更新颖、多样化的教学模式,以此来促进中职平面设计教学水平的不断提升。  【关键词】 翻转课堂 中职平面设计课程 应用策略  翻转课堂主要指的是通过课内外时间的合理调整,互换
随着信息技术的发展,嵌入式处理器在人们生产生活中的应用越来越广泛,具有高性能、低成本和低功耗特点的嵌入式处理器也由此被广泛地应用于各个领域。CISC结构指令代码密度高,而
麝(Moschus spp)隶属于偶蹄目(Artiodactyla)麝科(Moschidae),分布于喜马拉雅、东亚地区,是兽类中经济价值极高的资源动物,雄麝香腺囊分泌物-麝香,是名贵药材和高级香料的原材料。
【摘要】 随着电力改革的不断深化,电力安全的受关注程度进一步提升。基于此,本文将简单分析电力安全生产管理常见问题,并结合广东电网的相关实践探索,深入探讨新时期电力安全生产管理措施选择,希望研究内容能够为相关业内人士带来一定启发。  【关键词】 电力安全 供电局 生产管理  前言:为满足民众不断提升的电力需求,電力安全稳定供应向来属于我国各地供电局工作的重心,电力安全生产管理则属于其中关键。
随着电子信息技术与通信技术的发展,无线通信业务不断增加,因此,对增加通信系统的容量、提供更高的数据速率、支持多媒体业务等提出了更高的要求。多输入多输出(Multiple-Inp
当前有一种传说,现在美术馆建得多了,尤其是名家馆多了,需要甄别够不够名家的资格。至今中国大大小小的博物馆大约有3600家,其中美术馆不超过300家,名家美术馆(包括在世名画
肺癌是一种常见的恶性肿瘤。随着吸烟和环境污染影响的增加,肺癌的发病率和病死率均迅速上升。肺癌已成为我国恶性肿瘤首位死亡原因。肿瘤细胞分子水平的改变,如染色体、基因的
随着无线通信相关技术的发展以及用户对业务种类需求的提高,无线通信网中的定位功能显得日益重要。但现有的定位技术有时不能满足定位精度的需要,而超宽带技术的出现给定位技术
滇池金线鲃Sinocyclocheilus grahami隶属于鲤形目(Cypriniformes)鲤科(Cyprinidae)金线鲃属(Sinocyclocheilus),为滇池流域特有的鱼类。本文以人工繁殖的滇池金线鲃仔稚鱼为实
【摘要】 音乐是传播艺术文化的介质,也是启迪人类智慧和灌溉人类心灵的实践产物。我国音乐形式具有多样化的特点,促进了我国艺术文化的繁荣。音乐文化也是衡量国家竞争软实力的重要因素,尤其是它将人民的精神世界与物质生活集中体现出来,能够推动国家社会进步。在新时期,我国的音乐依旧停滞不前,主要原因是缺乏音乐创新人才,音乐教育作为培养音乐人才的重要途径,教学工作者理应转变教学模式,培育学生创新思维。本文以高