编译原理的简介

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。

编译器是将汇编或高级计算机语言翻译为二进制机器语言代码的计算机程序。编译器将源程序(source language) 编写的程序作为输入,翻译产生目标语言(target language )机器代码的等价程序。通常地,源程序为高级语言(high-level language ),像C或C + +、汉语语言程序等,而目标则是机器语言的目标代码 (object code,有时也称作机器代码(machine code )),也就是可以在计算机硬件中运行的机器代码软件程序。

PS:这一过程可以表示为:源程序→编译器 →目标机器代码程序。

高级语言编写的程序必须由一个翻译程序翻译成机器语言程序;翻译程序有两种方式,一种是编译方式,另一种是解释方式。编译方式是先将源程序翻译成汇编语言程序或机器语言程序(称为目标程序),然后再执行它。解释方式并不是先产生目标程序然后执行它,而是对源程序边翻译边执行。

编译过程划分为六个阶段,这种划分是编译程序的逻辑组织方式。实际上,编译过程往往分为前端和后端。前端包括词法分析,语法分析,语义分析,中间代码生成和中间代码优化,主要依赖于源程序;后端包括目标代码生成,依赖与计算机硬件系统和机器指令系统。这种组织方式,便于编译程序的移植,若要将编译程序移植到不同类型的机器,只需要修改编译程序的后端即可。

1,词法分析:是编译过程的基础,其任务是扫描源程序,根据语言的词法规则,分解和识别出每个单词,并把单词翻译成相应的机内表示。当然,词法分析在识别单词的过程中,同时也做了词法检查。(单词是语言中最小的语义单位,如语言中的关键字,保留字或基本字,标识符,常数,运算符和界限符)

2,语法分析:语法分析在词法分析的基础上进行的。语法分析的任务是根据语言的语法规则,把单词符号串分解成各类语法单位,如表达式,语句等等。通过语法分析,可以确定整个输入符号串是否构成一个语法正确的程序。

3,语义分析:语义分析的任务是对源程序进行语义检查,其目的是保证标识符和常数的正确使用,把必要的信息收集,保存到符号表或中间代码程序中,并进行相应的处理。

4,中间代码生成:中间代码生成阶段的任务是在语法分析和语义分析的基础上,根据语法成分的语义对其进行翻译,这种翻译的结果即某种中间代码形式。这种中间代码结果简单,接近于计算机的指令形式,或者能很容易地翻译成计算机的指令。常用的中间代码有三元式,四元式和逆波兰式,其中三元式近似于二地址指令,四元式近似于三地址指令。

5,中间代码优化:中间代码优化通过调整和改变中间代码中某些操作的次序,以最终产生更加高效的目标代码(压缩程序执行所占用的内存空间和执行时间)。

6,目标代码生成:目标代码生成阶段的任务是将中间代码或优化之后的中间代码转换为等价的目标代码,即机器指令或汇编指令(目标代码依赖于具体的计算机的硬件系统结构和指令系统)。

7,表格处理程序:源程序的各种信息需要保留在各种表格之中,在编译的各个阶段都需要查找或更新有关的表格。

8,出错处理程序:负责发现源程序中可能出现的错误,并把错误报告给用户,指出错误的性质和发生错误的位置。

时间: 2025-01-14 10:05:20

编译原理的简介的相关文章

Android7.0 Ninja编译原理

############################################# 本文为极度寒冰原创,转载请注明出处 ############################################# 引言 使在Android N的系统上,初次使用了Ninja的编译系统.对于Ninja,最初的印象是用在了Chromium open source code的编译中,在chromium的编译环境中,使用ninja -C out/Default chrome命令,就可以利用源码编译出

《东南大学 编译原理 64讲》 学习笔记

简介: 编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法.内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成. 编译原理是计算机专业设置的一门重要的专业课程.虽然只有少数人从事编译方面的工作,但是这门课在理论.技术.方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力. 编译:就是将程序语言进行翻译,生成可供用户直接执行的二进制代码,即可执行文件. 全部内容大致如课程目录所示. 本视频的配套教程可以使

小白说编译原理-5-变量支持计算器

简介 本章依然专注于使用yacc实现计算器,主要的特点是给算术运算增加变量支持. 模块拆分 它主要分为3个模块 1. lex词法分析器 2. yacc语法分析器 3. 符号表 功能描述 1. lex词法分析器 正规式的定义如下: delim [ \t] ws {delim}+ letter [a-zA-Z] digit [0-9] id {letter}({letter}|{digit})* /* can support 12.34 */ number {digit}+(\.{digit}+)?

编译原理pdf

下载地址:网盘下载 内容简介  · · · · · · 本书全面.深入地探讨了编译器设计方面的重要主题,包括词法分析.语法分析.语法制导定义和语法制导翻译.运行时刻环境.目标代码生成.代码优化技术.并行性检测以及过程间分析技术,并在相关章节中给出大量的实例.与上一版相比,本书进行了全面的修订,涵盖了编译器开发方面的最新进展.每章中都提供了大量的系统及参考文献. 本书是编译原理课程方面的经典教材,内容丰富,适合作为高等院校计算机及相关专业本科生及研究生的编译原理课程的教材,也是广大技术人员的极佳参

深入理解flutter的编译原理与优化

摘要: 闲鱼技术-正物 问题背景 对于开发者而言,什么是Flutter?它是用什么语言编写的,包含哪几部分,是如何被编译,运行到设备上的呢?Flutter如何做到Debug模式Hot Reload快速生效变更,Release模式原生体验的呢?Flutter工程和我们的Android/iOS工程有何差别,关... 闲鱼技术-正物 问题背景 对于开发者而言,什么是Flutter?它是用什么语言编写的,包含哪几部分,是如何被编译,运行到设备上的呢?Flutter如何做到Debug模式Hot Reloa

深入理解 Flutter 的编译原理与优化

阿里妹导读:对于开发者而言,Flutter工程和我们的Android/iOS工程有何差别?Flutter的渲染和事件传递机制如何工作?构建缓慢或出错又如何去定位,修改和生效呢?凡此种种,都需要对Flutter从设计,开发构建,到最终运行有一个全局视角的观察. 本文由闲鱼技术团队出品,将以一个简单的hello_flutter为例,介绍下Flutter相关原理及定制与优化. Flutter简介 Flutter的架构主要分成三层:Framework,Engine和Embedder. Framework

编译原理开坑中……

编译原理 简介: 编译器和解释器 /* input --> C --> output 可执行的程序 offline input --> I --> output 结果 online /* 编译器的结构 I --> 前端 --> 后端 --> O 详细: I --> [词法 --> 语法]-->[指令生成 --> 优化] --> O 栈式计算机 /* 两条指令 push add 伪代码 // push 是压栈的意思 push 1 pus

编译原理知识汇总

转自:https://www.jianshu.com/p/eb63d31ad638 编译原理 第一章 引言 1.从面向机器的语言到面向人类的语言 汇编指令:用符号表示的指令被称为汇编指令 汇编语言:汇编指令的集合称为汇编语言 2.语言之间的翻译 转换(也被称为预处理):高级语言之间的翻译,如FORTRAN到ADA的转换 编译:高级语言可以直接翻译成机器语言,也可以翻译成汇编语言,这两个翻译过程称为编译 汇编:从汇编语言到机器语言的翻译被称为汇编 交叉汇编:将一个汇编语言程序汇编成为可在另一机器上

编译原理123

1.编译原理就是什么? 个人理解,编译就是像翻译一样,将一种语言翻译成另一种语言,编译就是将高级语言或汇编语言翻译成电脑能识别的二进制机器语言,编译原理就是讲解这 个编译的过程.内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成. 编译原理是计算机专业设置的一门重要的专业课程.虽然只有少数人从事编译方面的工作,但是这门课在理论.技术.方法上都对学生提供了系统而有效的训练,有 利于提高软件人员的素质和能力. 2.学习编译原理有什么好处? 学习编译原