基本数据类型的实现 存储表示 基本类型的存储受低层计算机的影响很大。 如:整数或实数几乎就是在低层硬件中使用的数的 整数或浮点数表示。 对字符值,硬件或OS字符码被使用 基本理由: 如使用硬件存储表示,则该类型数据基本操作可以 用硬件提供的基本操作实现。 否则,将使用软件仿真,从而带来效率损失
基本数据类型的实现 •存储表示 基本类型的存储受低层计算机的影响很大。 如:整数或实数几乎就是在低层硬件中使用的数的 整数或浮点数表示。 对字符值,硬件或OS字符码被使用。 基本理由: 如使用硬件存储表示,则该类型数据基本操作可以 用硬件提供的基本操作实现。 否则,将使用软件仿真,从而带来效率损失
基本数据类型的属性被类似地处理。 1、为了效率,很多语言设计为属性由编译器确定 属性本身并不存放在运行时存储表示中—存储表示 通常直接使用硬件,如:C、 Fortran、 Pascal等。 2、数据对象的属性可存放在描述子中作为运行时数 据对象的一部分,如:LISP、 Prolog等,这里灵活性 是主要目标。通常硬件不提供对描述子的直接表示。 数据对象的表示通常独立于存储位置,这样给定类型的 每个对象有相同的表示(除位置不同),通常用需要的 内存块的尺寸(大小)来描述,同时也涉及属性和值在 块中的布局 通常内存块的每一个字或字节的地址用于表示数据对象 的位置
基本数据类型的属性被类似地处理。 1、为了效率,很多语言设计为属性由编译器确定。 属性本身并不存放在运行时存储表示中——存储表示 通常直接使用硬件,如:C、Fortran、Pascal等。 2、数据对象的属性可存放在描述子中作为运行时数 据对象的一部分,如:LISP、Prolog等,这里灵活性 是主要目标。通常硬件不提供对描述子的直接表示。 数据对象的表示通常独立于存储位置,这样给定类型的 每个对象有相同的表示(除位置不同),通常用需要的 内存块的尺寸(大小)来描述,同时也涉及属性和值在 块中的布局。 通常内存块的每一个字或字节的地址用于表示数据对象 的位置
°操作的实现 1、直接作为硬件操作 如:整数表示为硬件整数,+,一也直接用硬件实现。 作为过程或函数子程序 如:平方根操作 如数据对象不使用硬件表示,则所有操作必须是软 件仿真,通常以子程序的形式。 3、作为 In-line(内嵌)代码序列。 而是将子程序中操作代码拷贝到程序中的调用点。, 这也是操作的软件实现形式,但不是使用短小的子 如P118下部的例子,绝对值函数的实现
•操作的实现 1、直接作为硬件操作 如:整数表示为硬件整数,+,-也直接用硬件实现。 2、作为过程或函数子程序 如:平方根操作。 如数据对象不使用硬件表示,则所有操作必须是软 件仿真,通常以子程序的形式。 3、作为In-line(内嵌)代码序列。 这也是操作的软件实现形式,但不是使用短小的子程序, 而是将子程序中操作代码拷贝到程序中的调用点。 如P118下部的例子,绝对值函数的实现
声明 编写程序时,程序员确定数据对象的名字和类型。还要确 定:生命期、在程序中的活动范围、相关操作等 声明:一种程序语句,告知语言翻译器关于数据对象的信 如声明语句放在特定的程序或类定义中,则指明了对象 希望的生命期。 声明可以是显式的,也可以是隐含的或缺省的。声明可以 为数据对象赋上初始值,也可指定常量值 °操作的声明 翻译时需要的关于操作的信息,主要是其基调 signature 对基本操作,不需显式的参数类型和结果类型声明,是 语言中固有的。 对程序员定义的操作,则必须指定之 如:sub:int×foat→foat=> float Sub(intx, float y)
声明 编写程序时,程序员确定数据对象的名字和类型。还要确 定:生命期、在程序中的活动范围、相关操作等。 声明:一种程序语句,告知语言翻译器关于数据对象的信 息。 如声明语句放在特定的程序或类定义中,则指明了对象 希望的生命期。 声明可以是显式的,也可以是隐含的或缺省的。声明可以 为数据对象赋上初始值,也可指定常量值。 •操作的声明 翻译时需要的关于操作的信息,主要是其基调signature。 对基本操作,不需显式的参数类型和结果类型声明,是 语言中固有的。 对程序员定义的操作,则必须指定之。 如:sub: int×float→float=>float Sub (int x,float y)
声明的目的 选择存储表示 声明可以给语言翻译器提供关于数据类型和数据对象属 性的信息,使得翻译器可以确定数据对象的最佳的存储 表示,从而减少整体的存储需求和被翻译程序的执行时 2、存储管理—声明使其更为高效 声明可以提供关于数据对象生命期的信息,从而使得在 程序执行过程中进行更高效的存储管理 如:在C语言中,在子程序头部声明的数据对象有相同 的生命期,这样可以在进入子程序时分配一个整体的块 来存放所有的数据对象,而在退出子程序时释放 其它动态创建的数据对象则需单独处理
•声明的目的 1、选择存储表示 声明可以给语言翻译器提供关于数据类型和数据对象属 性的信息,使得翻译器可以确定数据对象的最佳的存储 表示,从而减少整体的存储需求和被翻译程序的执行时 间。 2、存储管理——声明使其更为高效 声明可以提供关于数据对象生命期的信息,从而使得在 程序执行过程中进行更高效的存储管理。 如:在C语言中,在子程序头部声明的数据对象有相同 的生命期,这样可以在进入子程序时分配一个整体的块 来存放所有的数据对象,而在退出子程序时释放。 其它动态创建的数据对象则需单独处理