第1章 编译程序概论

2024-05-06 03:08
文章标签 概论 编译程序

本文主要是介绍第1章 编译程序概论,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本概念:

  • 机器语言:能够被计算机的硬件系统直接执行的指令程序。 
  • 汇编语言:将硬件指令用一些助记符表示。如ADD表示加法操作,SUB表示减法操作等等 
  • 高级语言:使用便于理解的自然语言。

语言处理程序

  • 解释程序(器):接受某种语言源程序,然后直接解释执行源程序。
  • 编译程序(器):接受某种语言的源语      言程序后,将它改造成另一种逻辑上等价的目标语言程序。 








编译的各个阶段

  • 词法分析
  • 词法分析的功能是从左到右读入源程序的每个字符,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也叫单词符号或符号)。
  • 依据:语言的构词规则。
  • 单词:逻辑上紧密相连的一组字符,这些字符具有集体含义。
  • 如:标识符、保留字(关键字或基本字)、算符、界符等。

  • 语法分析
  • 语法分析的功给是将单词序列分解成各类语法短语(也叫语法单位,句子),确定整个输入串是否构成一个语法上正确的程序。
  • 依据:语言的语法规则。
  • 通过语法分析确定整个输入串是否构成一个语法上正确的程序。
  • 语句的表示:
    标识符:=表达式  是语句。
    while (表达式) do 语句
    if (表达式) then 语句 else 语句
    都是语句。

  • 语义分析
  • 语义分析的功能是审查源程序有无语义错误,为代码生成阶段收集类型信息。
  • 语义分析主要能识别的语义错误有变量没有声明就使用,变量重复声明,运算对象类型是否匹配等等。

  • 中间代码生成
  • 将源程序生成一种内部表示形式,这种内部表示形式叫中间代码。
  • 中间代码:一种结构简单、含义明确的记号系统。
原则:
  • 容易生成;
  • 容易将它翻译成目标代码。
如四元式:
(运算符,运算对象1,运算对象2,结果)


  • 代码优化
  • 目的:使目标代码运行时间较短,占用空间较小。


  • 目标代码生成
  • 任务:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
  • 特点:与硬件系统结构和指令含义有关,涉及到硬件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后缓寄存器的调度等。


  • 符号表管理
  • 符号表用来记录源程序中出现的标识符,并收集每个标识符的各种属性信息。
  • 符号表是由若干记录组成的数据结构,每个标识符在表中有一条记录,每条记录有多个域,每个域记载标识符的一个属性。

  • 有关名词:
  • 前端(front end):主要依赖于源语言而与目标机器无关的编译阶段。如:词法分析、语法分析、语义分析、中间代码生成、部分优化工作、与前端有关的出错处理工作和符号表管理工作。
  • 后端(back end):依赖于目标机而一般不依赖于源语言,只与中间代码有关的编译阶段。如:目标代码生成,以及相关出错处理和符号表操作。
  • 遍(趟):对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。每一遍扫视可完成上述一个阶段或多个阶段的工作。


这篇关于第1章 编译程序概论的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/963312

相关文章

xml概论

以下内容摘录自W3School 一、XML的特性 xml是用来传输和存储数据的,本身对数据没有任何操作。在这里要区别一下html,html是用来显示数据的。xml的焦点是数据内容,html的焦点是数据外观。 下面是xml的定义: •XML 指可扩展标记语言(EXtensible Markup Language) •XML 是一种标记语言,很类似 HTML

数字电视概论

1. 数字电视和高清晰度电视得概念:         数字电视(Digital Television, DTV):是数字电视系统得简称,是指采用数字技术将音频、视频和数字等信号进行信源编码、信道编码和调制等处理,经存储或实时广播后,供用户接收、播放得电视系统。 高清晰度电视(HDTV):是一种电视业务,原CCIR(国际无线电咨询委员会,现改名为ITU-R)给高清电视的定义是:“高清晰度电视是一

统计学习方法与实战——统计学习方法概论

统计学习方法概论 文章目录 统计学习方法概论前言章节目录导读 实现统计学习方法的步骤统计学习方法三要素模型模型是什么? 策略损失函数与风险函数常用损失函数ERM与SRM 算法 模型评估与模型选择过拟合与模型选择 正则化与交叉验证泛化能力生成模型与判别模型生成方法判别方法 分类问题、标注问题、回归问题1. 分类问题2. 标注问题(序列标注问题)3. 回归问题总结 前言 章节目

OpenStack概论和部署

目录 1.1 云计算概述 1.1.1 什么是云计算 1.laaS 2.PaaS 3.Saas 1.1.2 0penStack 概述 1.OpenStack 起源 2.什么是 Openstack 3.OpenStack 优势 1.2 安装方式 1.2.1 在线安装 1.配置系统基本环境 2.为系统设置阿里的仓库 3:设置kvm源 4:设置openstack仓库(两个

深度学习从入门到精通——统计学习方法概论

统计学习方法概论 文章目录 统计学习方法概论前言章节目录导读 实现统计学习方法的步骤统计学习方法三要素模型模型是什么? 策略损失函数与风险函数常用损失函数ERM与SRM 算法 模型评估与模型选择过拟合与模型选择 正则化与交叉验证泛化能力生成模型与判别模型生成方法判别方法 分类问题、标注问题、回归问题1. 分类问题2. 标注问题(序列标注问题)3. 回归问题总结 前言 章节目

C# 编译程序引用C++DLL托管动态链接库实例

构建 C# 程序引用C++DLL托管动态链接库 前言1、统一框架版本2、统一编译平台3、C++ 托管动态链接库的优点3.1、C++ 托管动态链接库引用方便简单3.2、C++ 托管动态链接库加快了程序构建和重复利用3.3、C++ 托管动态链接库源代码更加安全 4、构建与 C# 程序进行互操作的C++.DLL动态链接库的三种方法4.1、使用DllImport特性构建DLL库4.2 、使用C++/

【数据库系统概论】绪论----数据库系统概论(三)

1.2.7 关系模型     关系模型是目前最重要的一种数据模型。  一、关系模型的数据结构     关系模型是由一组关系组成的,每个关系的数据结构是一张规范化的二维表。 关系:一个关系通常对应一张表 元组:表中一行即为一个元组 属性:一列 码:某个属性组可以唯一确定一个元组 域:属性的取值范围 分量:元组中的一个属性值 关系模式:用表模型来描述:关系名(属性1,属

【数据库系统概论】绪论----数据库系统概论(二)

1.2数据模型 上接18页 1.2.4 最常用的数据模型 最常用的逻辑数据模型有: 层次模型网状模型关系模型面向对象模型对象关系模型         层次模型和网状模型统称为格式化模型,20世纪70年代比较流行,后来逐渐被关系模型逐渐取代。         数据结构,数据操作和完整性约束三方面完整的描述了一个数据模型。         数据结构是刻画模型性质的最本质方面。

【数据库系统概论】绪论----数据库系统概论(一)

1.1 数据库系统概论 1.1.1 数据库系统概论         1. 数据             描述事物的符号记录称为是数据;               数据的解释叫做语义,他与数据时密不可分的;              记录是计算机中表示和储存数据的一种格式或者一个方法;         2. 数据库              把数据以一定的格式存放在计算机储存设备上

Windows下Sublime text 编译程序出现[Error 2] 的解决办法

来源URL:http://blog.sina.com.cn/s/blog_8965a21601019a4c.html 错误信息 [Error 2] [cmd: [u'bash', u'-c', u"g++ 'E:\\Wamp\\wamp\\c\\1.cpp' -o 'E:\\Wamp\\wamp\\c/1' && 'E:\\Wamp\\wamp\\c/1'"]][dir: E:\