- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章机器体系机构对语言的影响
;第2章 机器体系机构对语言的影响;[重点和难点]:
本章的重点是:虚拟计算机的基本概念;绑定时间的基本概念;编译与解释的基本概念以及各自的特点。
本章的难点是:绑定时间的基本概念机器与语言实现的关系;;概述; 2.1 计算机的操作
2.2 虚拟计算机和绑定时间
;2.1 计算机的操作;本节主要内容;计算机的硬件结构;数据;操作;顺序控制;;数据存取;存储管理;操作环境;固件计算机;固件计算机是一个相对较为严格的硬件实现方式。即在一台可进行微编程的硬件计算机上通过微程序模拟实现。该计算机的机器语言包括一个低级微指令集,它们规定了MM和cache间、各R间通过加法器或乘法器的数据传送。微程序在可编程的主机上模拟计算机操作。微程序通常存储在主机的一个特殊的ROM中,并由主机硬件高速运行。
计算机的微程序模拟也称之为仿真。由于计算机是使用微程序模拟的,并不实际存在,因此仿真计算机也称之为模拟计算机。;翻译器和软件模拟计算机;翻译(编译);装入或连接器(loader or linker):将各个分别编译的子程序目标程序装入到内存中适当的地址(重定向),并将各个子程序连接在一起构成一个地址相容的单一可执行程序,如下图所示:
子程序 编译后的地址 执行地址(重定向地址)
P 0~999 1000~1999
Q 0~1999 2000~3999
库函数 0~3999 4000~7999
预处理器(preprocessor)或宏处理器(macroprocessor):高级语言源程序—相同语言的标准形式。如C语言。
注:通常将一个高级语言源程序翻译成一个可在机器上直接运行的机器语言目标程序不是一个翻译过程可完成的,可能需要经过一系列的处理和翻译。如C++源程序——C语言程序——汇编语言程序——机器语言程序(可执行的目标语言程序);软件模拟(软件解释);翻译与解释之比较;由此可见,翻译与解释各有利弊,且是两个极端。除汇编和OS中的控制语言及交互式语言之外,在现实中,通常将二者结合。
典型的二者结合的语言实现结构如图所示。;;语言的实现;2.2 虚拟计算机和绑定时间;本节主要内容;虚拟计算机和语言实现;当一种程序设计语言在一台具体的计算机上实现时,实现者首先确定虚拟计算机,然后才考虑构造虚拟计算机。例如,如果要实现整数加法和乘方运算,实现者可考虑由具体计算机提供的加法来实现虚拟计算机的加法运算,而用软件模拟来实现虚拟计算机的乘方运算。如果要实现指示整形变量X,实现者可以考虑由包含X值的内存地址直接指示X,也可以使用指针来指示X。
这引出了实现过程中的第二个问题:不同具体计算机所提供的不同设施对语言的实现产生差异。
;此外,实现者还要考虑在程序的翻译阶段需要完成哪些工作,在程序执行阶段需要做哪些事情。通常在执行时,只有在程序翻译时采用了某些操作建立了运行时间结构后,具体的表示虚拟计算机的数据结构或操作才能够被使用。如果实现者省略了这些操作以简化翻译器,则数据结构与算法在运行时将会有不同的表示。
这引出了实现过程中的第三个问题:语言实现者关于如何使用具体计算机所提供的设施来模拟虚拟计算机的不同考虑以及为了支持这些虚拟计算机而构造的翻译器存在差异。;虚拟机的层次;绑定和绑定时间;绑定时间的分类;转换时(编译时)
程序设计者选定:程序设计者有意识地选择变量名、变量的类型和语句结构等在编译时绑定。如变量定义并初始化时,变量与值的绑定,如 char ch=‘a’;
翻译程序选定:在没有直接规范的情况下,由翻译程序确定。如C语言中一个变量与其存储单元的绑定。如 int ary[10];
装载程序确定:分别编译的情况下,变量与其存储单元的最终物理存储单元的绑定(重定向),由装载程序确定。如
子程序 变量 编译后P(X)的地址 重定向后P(X)的地址
P x 0~999 (165) 1000~1999( 1165);语言实现时:
绑定时间一般允许在语言定义中指定。语言设计可以规定一个特别的约束在翻译时间确定,但实际上绑定的时间是由语言的实现所定义的。如,对于Pascal语言,变量的类型在编译时
文档评论(0)