4K+ 次浏览
编译器需要操作系统分配一块内存。编译器使用这块内存来实现编译后的程序。这块内存被称为存储管理。编译器应该执行的任务是分配目标机器的资源来定义源代码正在操作的数据对象。存储管理主要分为三个阶段:初始分配 - 最初,每块存储空间要么是空闲的,要么是正在使用的。如果是空闲的,则在执行过程中可用于动态分配。存储管理系统需要几种方法……阅读更多
6K+ 次浏览
顺序控制顺序控制定义了语句按顺序执行的逐行实现方式,顺序与它们在程序中出现的顺序相同。它可以移动一系列读写操作、算术运算或变量赋值。顺序控制结构可以是隐式的或显式的。隐式顺序控制 - 隐式顺序控制结构是由语言表示的。隐式顺序控制由源代码中语句的顺序或内置实现模型决定。除被…转换外,隐式顺序控制结构往往…阅读更多
2K+ 次浏览
子程序子程序定义为一组语句,可以在程序中需要时重复使用多次。这种重复使用可以带来多种类型的节省,从内存空间到编码时间。这种重复使用也是一种抽象,因为子程序计算的分析是在程序中通过调用子程序的语句来恢复的。子程序的特性子程序的特性如下:子程序只有一个入口点。在被调用子程序的执行过程中,调用者处于暂停状态。当被调用子程序的执行结束时,控制权会返回给调用者。子程序的优点以下列出了…阅读更多
11K+ 次浏览
子程序定义为一组语句,可以在程序中需要时重复使用多次。这种重复使用可以带来多种类型的节省,从内存空间到编码时间。这种重复使用也是一种抽象,因为子程序计算的分析是在程序中通过调用子程序的语句来恢复的。子程序的特性子程序的特性如下:子程序只有一个入口点。在被调用子程序的执行过程中,调用者处于暂停状态。当被调用子程序的执行结束时,控制权会重复返回给调用者。子程序的类型有两种…阅读更多
3K+ 次浏览
顺序文件的主要操作如下:创建文件 - 文件的主要创建也定义为文件的加载。在某些实现中,首先为文件分配空间,然后将数据加载到该框架中。打开文件 - 在程序可以访问文件进行输入或输出之前,必须打开该文件。打开操作给出文件名和访问模式(读取或写入)。在 Pascal 中,过程 reset 以读取模式打开文件,过程 rewrite 以…模式打开文件阅读更多
805 次浏览
指定数据结构的主要属性包括以下内容:组件数量 - 如果数据结构在其生命周期内组件数量始终不变,则其大小是固定的;如果组件数量动态变化,则其大小是可变的。可变大小的数据结构类型通常定义从结构中插入和删除元素的操作。数组和记录是固定大小数据结构类型的示例。堆栈、列表、集合、表和文件是可变大小数据类型的示例。可变大小的数据对象使用指针数据类型,使固定大小的数据对象能够显式地…阅读更多
142 次浏览
为数据类型定义的操作集决定了如何操作该类型的数据对象。操作可以是基本操作,这意味着它们在语言定义中被声明为一个元素,也可以是程序员定义的操作,作为类定义的一个元素。操作是一个数学函数,对于给定的输入参数,它具有清晰且一致的结果。每个操作都有一个域(它可以产生的一组可能的结果)。操作的动作表示为任何给定参数集产生的结果。组合的元素…阅读更多
类型检查是确保运算符的操作数类型兼容的过程。兼容类型是指对运算符来说是合法的类型,或者根据语言规则允许通过编译器生成的代码隐式转换为合法类型。这种自动转换称为强制转换。如果语言中所有变量到类型的绑定都是动态的,那么类型检查实际上可以不断地动态完成。动态类型检查在程序执行期间进行。动态类型检查通常通过在每个数据对象中保存一个类型标记来执行,该标记表示…阅读更多
编程语言是一种人工语言,可以控制机器的行为,尤其是在计算机中。像自然语言一样,编程语言由语法和语义规则定义,分别定义它们的结构和含义。编程语言的层次结构如下:程序 - 计算机程序是计算机的指令。计算机需要程序才能运行,通常在主处理器中执行程序的指令。程序具有计算机可以直接使用的可执行形式来执行指令。等效程序以其人类可读的源程序形式存在,从中可以生成可执行程序…阅读更多
14K+ 次浏览
单遍编译器单遍编译器只读取代码一次,然后将其翻译。单遍编译器只遍历每个编译单元的部分。它可以将每一部分翻译成最终的机器程序。在单遍编译器中,当处理源代码行时,它会扫描并提取标记。这与多遍编译器形成对比,多遍编译器会逐步将程序修改为一个或多个中间表示,在源程序和机器程序之间,并且在每个顺序遍中转换整个编译单元。单遍编译器速度很快,因为所有编译器代码…阅读更多