第二章 语言设计问题
第二章 语言设计问题
早期的语言设计需使程序能高效地运行于昂贵的硬件上,因此 早期语言总以翻译成高效的机器码为目标,既使程序难以书写。 现在,硬件价格下降、软件价格上升,更强调程序容易书写, 即使慢点也可。例如,ML的类型特性、C++的类、Ada的 Package均在执行速度上有代价,但对保证程序正确性有帮助 开发语言时,有三个影响语言设计的主要因素: 计算机本身 在计算机上支持语言的执行模型,即虚拟计算机 语言所实现的计算模型
•早期的语言设计需使程序能高效地运行于昂贵的硬件上,因此, 早期语言总以翻译成高效的机器码为目标,既使程序难以书写。 •现在,硬件价格下降、软件价格上升,更强调程序容易书写, 即使慢点也可。 例如,ML的类型特性、C++的类、Ada的 Package均在执行速度上有代价,但对保证程序正确性有帮助。 •开发语言时,有三个影响语言设计的主要因素: 计算机本身 在计算机上支持语言的执行模型,即虚拟计算机 语言所实现的计算模型
21计算机的结构和操作 个计算机是能够存储和执行程序的数据结构和算法的集成集 计算机可构造为实际的物理设备,用导线、集成电路、电路板 等。此即实际计算机或称硬件计算机。 ˆ计算机构造为软件,用运行于其他计算机上的程序。此即软件 仿真计算机 程序设计语言的实现是通过一个翻译器,将以语言书写的程序 翻译为机器语言程序(可为某计算机直接执行,可以是硬件计 算机,也可以为软硬参杂的虚拟机)
2.1 计算机的结构和操作 •一个计算机是能够存储和执行程序的数据结构和算法的集成集 合。 •计算机可构造为实际的物理设备,用导线、集成电路、电路板 等。此即实际计算机或称硬件计算机。 •计算机构造为软件,用运行于其他计算机上的程序。此即软件 仿真计算机。 •程序设计语言的实现是通过一个翻译器,将以语言书写的程序 翻译为机器语言程序(可为某计算机直接执行,可以是硬件计 算机,也可以为软硬参杂的虚拟机)
一个计算机包含6个主要部件,它们紧密地对应于程序设计 语言的主要方面 1、数据:计算机必须提供各种基本数据项和操作的数据 结构 2、基本操作:必须提供对操作数据有用的基本操作集 3、顺序控制:必须提供控制基本操作执行顺序的机制 4、数据访问:必须提供控制向操作的执行供给数据的机 制 5、存储管理:必须提供控制程序和数据存储分配的机制 6、操作环境:必须提供与包围程序和被处理数据的外部 环境通讯的机制
•一个计算机包含6个主要部件,它们紧密地对应于程序设计 语言的主要方面。 1、数据:计算机必须提供各种基本数据项和操作的数据 结构。 2、基本操作:必须提供对操作数据有用的基本操作集。 3、顺序控制:必须提供控制基本操作执行顺序的机制。 4、数据访问:必须提供控制向操作的执行供给数据的机 制。 5、存储管理:必须提供控制程序和数据存储分配的机制。 6、操作环境:必须提供与包围程序和被处理数据的外部 环境通讯的机制
计算机硬件 个典型的传统计算机组织如下: External files and input-output equipment Main memory 包括程序和被处理的数据 Cache memory Program Address gh-speed Register Data Registers reg 完成处理工作 取机器指令 Active Primitiv Primitive Interpreter <--- processing 解码 operation t operation k elements CENTRAL PROCESSING UNIT 操作主存和高速缓存中的数据 调用指定的基本操作,以指定的操作数作为输入在主存和外部环境间传递程序或数据
计算机硬件 •一个典型的传统计算机组织如下: 包括程序和被处理的数据 操作主存和高速缓存中的数据 在主存和外部环境间传递程序或数据 完成处理工作 取机器指令 解码 调用指定的基本操作,以指定的操作数作为输入
数据 有三个主要的存贮部件:主存,高速寄存和外部文件。 主存:组织为线性位串,可分为定长的字(32或64)或8 位字节。 寄存器:字长度的位串,可能有特殊的子域可直接访问, 可存数据或主存地址。 外部文件:存在盘、带或 CD-ROM上,按记录划分,记 录是位或字节的序列 个计算机有被硬件基本操作直接操作的固有数据类型。 般有:整数、单精度实数(浮点数)、定长字符串、 定长位串等。 除了明显的硬件数据元素外,程序(也有固有的内部表 示,称为机器语言表示)也是一种数据形式 机器语言程序可构造为存储位置的序列,每个包含一或 多条指令,每条包括操作码和若干操作数(指示)
•数据 有三个主要的存贮部件:主存,高速寄存和外部文件。 主存:组织为线性位串,可分为定长的字(32或64)或8 位字节。 寄存器:字长度的位串,可能有特殊的子域可直接访问, 可存数据或主存地址。 外部文件:存在盘、带或CD-ROM上,按记录划分,记 录是位或字节的序列。 一个计算机有被硬件基本操作直接操作的固有数据类型。 一般有:整数、单精度实数(浮点数)、定长字符串、 定长位串等。 除了明显的硬件数据元素外,程序(也有固有的内部表 示,称为机器语言表示)也是一种数据形式。 机器语言程序可构造为存储位置的序列,每个包含一或 多条指令,每条包括操作码和若干操作数(指示)
操作 计算机必须包含有一个固有的基本操作集,通常和机器 语言指令中操作码一一对应 典型的操作集包括在固有数值类型上的基本算术操作。 测试数据项各种性质的基本操作。 访问和修改数据项的基本操作。 控制I/O设备的基本操作。 顺序控制的基本操作 传统的机器是CISC, complex instruction set computers 新近发展的是RISC, reduced instruction set computers 更少的基本指令,更简单的内部逻辑
•操作 计算机必须包含有一个固有的基本操作集,通常和机器 语言指令中操作码一一对应。 典型的操作集包括在固有数值类型上的基本算术操作。 测试数据项各种性质的基本操作。 访问和修改数据项的基本操作。 控制I/O设备的基本操作。 顺序控制的基本操作。 传统的机器是CISC,complex instruction set computers. 新近发展的是RISC,reduced instruction set computers. 更少的基本指令,更简单的内部逻辑
顺序控制 程序地址寄存器(位置计数器)的内容决定了下一条将 执行的指令,即包含了下条指令的地址 某些基本操作允许修改程序寄存器,从而传递控制到程 序的其他部分 解释器实际地使用程序地址寄存器并指导操作序列 解释器是计算机操作的中心,其周期动作如图所示:
•顺序控制 程序地址寄存器(位置计数器)的内容决定了下一条将 执行的指令,即包含了下条指令的地址。 某些基本操作允许修改程序寄存器,从而传递控制到程 序的其他部分。 解释器实际地使用程序地址寄存器并指导操作序列。 解释器是计算机操作的中心,其周期动作如图所示:
Fetch next instruction Decode instruction(determine the operation and operand designators Fetch designated operands Branch to designated operation Execute Execute xecute Execute primitive primitive primitive halt operation 1 operation operation operation Stor
数据访问 除了操作码外,每个机器指令必须指明所需的操作数 (必须在主存或寄存器中) 计算机必须结合指定操作数的手段和从给定操作数指示 器检索操作数的机制。同时,操作的结果也必须存储在 指定的位置 传统的存储控制杋制是为存储位置设定整数地址,提供 操作从给定地址的位置检索内容和存储新值 寄存器也赋以整数地址
•数据访问 除了操作码外,每个机器指令必须指明所需的操作数 (必须在主存或寄存器中) 计算机必须结合指定操作数的手段和从给定操作数指示 器检索操作数的机制。同时,操作的结果也必须存储在 指定的位置。 传统的存储控制机制是为存储位置设定整数地址,提供 操作从给定地址的位置检索内容和存储新值。 寄存器也赋以整数地址