【编译原理笔记】第一章
发布日期:2022-02-10 08:55:20 浏览次数:28 分类:技术文章

本文共 994 字,大约阅读时间需要 3 分钟。

概念

翻译程序: 将一种语言程序(称为源程序)改造成另一种等价的语言程序(称为目标程序)的程序。

源语言:书写源程序的语言称为源语言.

目标语言:书写目标程序的语言称为目标语言.

翻译程序

汇编程序、解释程序、编译程序

一、汇编程序

汇编程序:把汇编语言写的源程序翻译成机器语言的目标程序,这个翻译过程称为汇编。如下图:

汇编程序一般对源程序进行两遍扫描来完成。

第一遍:进行存贮分配,造出第二遍扫描时用的各种表格;

第二遍:用机器语言操作码来代替汇编符号操作码。

二、解释程序

解释程序:将高级语言写的源程序作为输入数据,但并不产生目标程序,而是边解释边执行源程序本身的一种程序。如下图:

解释程序适合于会话型语言,如BASIC语言。

主要优点:

1.易于为用户提供调试功能,对源程序的语法分析及出错处理都很及时;

2.修改调试也很方便,但是解释程序执行速度较慢,运行效率低。

三、编译程序

1.编译程序

是将高级语言写的源程序翻译成目标语言(汇编语言、机器语言)的程序。这种翻译过程称为编译。

2.编译系统

目标程序,再加上运行系统(如服务子程序、动态分配程序、装配程序等)就可获得计算结果,整个系统称为编译系统。

编译程序执行过程

 

Ch1 绪论

1.1 什么叫编译程序

编译器就是一个程序,它读入用某种语言编写的源程序,并翻译成一个与之等价的另一种语言编写的源程序。

1.2 编译过程概述

编译程序的工作,从输入源程序开始,到输出目标程序结束,与自然语言之间的翻译有很多相似之处。

编译器的各个阶段

1.3 编译程序的结构

1.4 编译各阶段的组合

一、前端和后端

前端包括词法分析、词法分析、语义分析,以及相关的错误处理和符号表的建立。前端依赖于源程序并在很大程度上独立于目标机器。

后端主要包括代码优化、代码生成和相关错误处理。后端依赖于目标机器。后端处理对象是由前端产生的结果,即中间代码。

在Java中,编译采用的是前端后端方式。前端生成与平台无关的字节码,后端是由与平台有关的解释器对所生成的字节码文件进行解释执行。

二、编译的遍

编译的若干阶段通常是以一遍来实现的,每遍读一次输入文件、产生一个输出文件。

1.5 错误检测与报告

在编译的各个阶段都会发现源程序中的错误,为了使编译器能继续运行,以检测出源程序中 更多的错误,在检测到错误后,必须以合适的方式进行错误处理。

 

 

转载地址:https://blog.csdn.net/hanmin822/article/details/106154519 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指Offer】n个骰子的点数
下一篇:【编译原理总结】由正则式构造等价的DFA并将其最小化

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月15日 12时35分58秒