第二章 语言设计问题课件.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 语言设计问题课件.ppt

绑定时间 (4/4) 4、语言定义时 语言的大多数结构是在语言定义时固定的(对程序员写程序时可用的规约)。如:对程序员可以使用的选择语句形式、数据结构类型、程序结构等。 * 18年 绑定和绑定时间(例子) 考虑下面简单例子:X:=X+10,假定该语言为L,则需考虑的绑定和绑字时间如下: 1、变量X的可能类型的集合 变量X在语句中通常和某类型相关联,如实数、整数、布尔,X的允许类型集合通常在语言定义时固定,如类型只能是:实数,整数,布尔,集合,字符等。此外,语言可能允许程序定义新类型,此时X的类型绑定在翻译时固定。 2、X的类型 通常在翻译时固定,通过显式的声明语句,如:Float X。有些语言,如Smalltalk、Prolog,类型绑定在运行时完成(无类型、弱类型语言)。 * 18年 绑定和绑定时间(例子) 3、变量X的可能值的集合 如X类型为real,则其值集为实数,真实集应为定义语言的虚拟机可表示和操作的实数,通常是可方便地在硬件机上表示和操作的实数。这样,X的可能值集在语言实现时确定,也可能是在装载时根据执行程序的硬件机确定。 4、变量X的值 在执行中某点,一特定值被约束到X。通常值是在执行时通过对X的赋值而确定的。 5、常量10的表示 整数10的表示作为程序中的常量,使用串‘10’;执行时,表示为位串。程序中十进制的选择通常在语言定义时决定(10也可能为2#的2),而特殊位串的选择是语言实现时决定。 * 18年 * ... * ... * ... * ... * ... * ... * ... * ... 第二章 语言设计问题 * 18年 语言设计考虑的因素 早期的语言设计的目标是希望程序能高效地运行于昂贵的硬件上,因此,早期语言总是以翻译成高效的机器码为目标,即使程序难以书写。 现在,硬件价格下降、软件价格上升,更强调程序容易书写,即使慢点也可。 例如,ML的类型特性、C++的类、Ada的包(Package)均以降低执行速度为代价,但对保证程序正确性有帮助。 开发语言时,有三个影响语言设计的主要因素: 计算机本身 在计算机上支持语言的执行模型,即虚拟计算机 语言所实现的计算模型 * 18年 主要内容 计算机结构与程序设计语言的关系 结构上的对应关系 对应关系的实现手段 程序的执行模型:虚拟计算机 虚拟机与程序语言实现的关系 程序语言与虚拟机的绑定 C/C++概述 * 18年 2.1 计算机的结构和操作 一个计算机是能够存储和执行程序的数据结构和算法的集成集合。 计算机可通过用电线、集成电路、电路板等构造为实际的物理设备,此即实际计算机或称硬件计算机。 计算机也可以用运行于其他计算机上的程序(或软件)来构造,此即软件仿真计算机。 程序设计语言的实现是通过一个翻译器,将以语言书写的程序翻译为机器语言程序(可被某计算机直接执行,该计算机可以是硬件计算机,也可以为软硬参杂的虚拟机)。 * 18年 计算机结构与程序设计语言 一个计算机包含6个主要部件,它们与程序设计语言的主要方面有着非常密切的对应关系。 1、数据:提供各种可供操作的基本数据项和数据结构。 2、基本操作:提供对操作数据有用的基本操作集。 3、顺序控制:提供控制基本操作执行顺序的机制。 4、数据访问:提供控制向操作的执行供给数据的机制。 5、存储管理:提供控制程序和数据存储分配的机制。 6、操作环境:提供与包围程序和被处理数据的外部环境通讯的机制。 * 18年 计算机硬件 包括程序和被处理的数据 操作主存和高速缓存中的数据 在主存和外部环境间传递程序或数据 完成处理工作 取机器指令 解码 调用指定的基本操作,以指定的操作数作为输入 返回 * 18年 翻译器和软件仿真计算机 尽管理论上有可能直接构造硬件或固件计算机,来运行任何特殊的程序设计语言,但构造这样的计算机并不经济。 现实的考虑是实际计算机采用低级机器语言(基于速度、灵活性和价格考虑),编程仍以高级语言进行。语言实现者面临的任务是如何使高级语言程序执行在实际计算机上,而不必关心其机器语言是什么。 这个实现问题有两个基本方案。 1、翻译(编译) 2、软件仿真(软件解释) * 18年 翻译(编译) 翻译过程: 高级语言程序→翻译器→等价的机器语言程序→硬件直接执行 翻译器: 源语言→等价的目标语言 * 18年 翻译(编译) 几种特殊类型的翻译器: A、汇编器 目标语言:实际计算机的机器语言 源 语 言:汇编语言,机器语言的符号表示 大多数指令是一对一的翻译 B、编译器 目标语言:汇编和机器语言 源 语 言:高级语言 C、装配器或连接编辑器(loader/link editor) 目标语言:实际的机器代码 源 语 言:几乎与机器代码相同,通常包含可重定位的机器语言程序和数据表(刻划可重定位代码为

您可能关注的文档

文档评论(0)

liuxiaoyu99 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档