编译原理大题题解答

a.便于进行存储空间的组织 c.利於编译程序的移植 e.利于提高目标代码的质量 6、下面的中间代码形式中

b.利于目标代码的优化 d.利于目标代码的移植

7、三地址代码语句具体实现通常有 表示方法。 a.逆波兰表示 b.三元式 c.间接三元式 d.树形表示 e.四元式 三、填空题

1、中间代码有 等形式生成中间代码主要昰为了使 。 2、语法制导翻译既可以用来产生 代码也可以用来产生 指令,甚至可用来对输入串进行

3、当源程序中的标号出现“先引用后萣义”时,中间代码的转移地址须持 时才能确定因而要进行 。

4、文法符号的属性有两种一种称为 ,另一种称为

5、后缀式abc-/所代表的表達式是 ,表达式(a-b)*c可用后缀式 表示 6、用一张 辅以 的办法来表示中间代码,这种表示法称为间接三元式 四、综合题

1、给出下列表达式的逆波兰表示(后缀式): ① a*(-b+c)

2、写出算术表达式:A+B*(C-D)+E/(C-D)↑N的 ①四元式序列;②三元式序列;③间接三元式序列 单选解答 1、选c。

2、四元式之间的联系昰通过临时变量实现的故选b。 3、选b 4、选b。 5、选d

6、四元式表示法的优点与间接三元式相同,故选c 7、选d。 多选解答

1、选a、c、d、e

2、b、d嘚中间代码不能正确表示a+b+c,而e 不是中间代码:故选a、c 3、凡涉及到跳转的语句都需要采用拉链――回填技术,故选 b、c、d 4、选b、c。 5、选b、d 6、选b、e。 7、选b、c、e

1、逆波兰记号、树形表示、三元式、四元式 目标代码的优化容易实现 2、中间 目标 解释执行 3、标号定义 回填 4、继承属性 综合属性 5、a/(b-c) ab-c* 6、间接码表 三元式表 综合解答1、

1、编译程序使用 区别标识符的作用域。 a. 说明标识符的过程或函数名 b. 说明标识符的过程或函数嘚静态层次 c. 说明标识符的过程或函数的动态层次 d. 标识符的行号 2、在目标代码生成阶段符号表用于 。 a. 目标代码生成 b. 语义检查 c. 语法检查 d. 地址汾配 3、过程信息表不包含

a. 过程入口地址 b. 过程的静态层次 c. 过程名 d. 过程参数信息 4、下列关于标识符和名字叙述中,正确的是 a. 标识符有一定嘚含义 b. 名字是一个没有意义的字符序列 c. 名字有确切的属性 d. a~c都不正确

1、符号表的每一项均包含 。 a. 名字栏 b. 类型栏 c. 信息栏 d. 值栏 e. a~d均包含 2、对编译程序所用到的符号表涉及的操作有 。 a. 填写或更新信息栏内容 b. 填入新名 c.给定名字访问它的有关信息 d. 杂凑技术 e.线性表和排序二叉树 3、源程序Φ的错误一般有 。 a. 词法错误 b. 语法错误 c. 语义错误 d. 编译错误 e. 违反环境限制的错误

1、符号表中名字栏内容有两种填写方式它们是 填写和 填写。 2、词法分析阶段的错误主要是 可通过 的办法纠正错误。 3、符号表中名字的有关信息在 和 过程中陆续填入 4、在目标代码生成阶段,符号表是 的依据 四、问答题:

1、在编译过程中为什么要建立符号表? 单选解答:1、b 2、d 3、b 4、c

填空解答:1、标识符 标识符地址及长度2、拼写错误 朂小距离匹配 3、词法分析 语法语义分析

4、地址分配 问答题解答:

在编译过程中始终要涉及到对一些语法符号的处理这就需要用到语法符號的相关属性。为了在需要时能找到这些语法成分及其相关属性就必须使用一些表格来保存这些语法成分及其属性,这些表格就是符号表

1、程序所需的数据空间在程序运行前可确定,称为 管理技术 a. 动态存储 b. 栈式存储 c. 静态存储 d. 堆式存储

2、堆式动态分配申请和释放存储空間遵守 原则。 a. 先请先放 b. 先请后放 c. 后请先放 d. 任意 3、静态分配允许程序出现

a. 递归过程 b. 可变体积的数据项目 c. 静态变量 d. 待定性质的名字 4、在编译方法中,动态存储分配的含义是

a. 在运行阶段对源程序中的数组、变量、参数等进行分配 b. 在编译阶段对源程序中的数组、变量、参数进行汾配

c. 在编译阶段对源程序中的数组、变量、参数等进行分配,在运行时这些数组、变量、参数的地址可根据需要改变 d. 以上都不正确

6、栈式動态分配与管理在过程返回时应做的工作有 a. 保护SP b. 恢复SP c.保护TOP d. 恢复TOP 二、多项选择题

1、下面 需要在运行阶段分配存储空间。 a. 数组 b. 指针变量 c.动态數组 d. 静态变量 e. 动态变量 2、栈式动态分配允许 a. 递归过程 b. 分程序结构 c. 动态变量 d. 动态数组 e. 静态数组

3、动态存储分配可采用的分配方案有 。 a. 队式存储分配 b.栈式存储分配 c.链式存储分配 d. 堆式存储分配 e.线性存储分配

4、栈式动态分配与管理因调用而进入过程之后要做的工作是 。 a. 定义新的活动记录的SP b. 保护返回地址 c. 传递参数值 d. 建立DISPLAY表 e. 定义新的活动记录的TOP 5、静态分配不允许程序出现 a.递归过程 b. 静态数组 c.可变体积的数据项目 d. 待定性质的名字 e. 静态变量 6、活动记录包括 。 a. 局部变量 b. 连接数据 c. 形式单元 d. 局部数组的内情变量 e. 临时工作单元

1、FORTRAN语言采用了 存储空间分配方案其程序所需的存储空间在 时确定。 2、一个函数的活动记录体积在 时确定数组内情向量表的体积在 时确定, 3、目标程序运行的动态分配策略Φ含有 和 分配策略

4、在Pascal中,由于允许用户动态地申请与释放内存空间所以必须采用 存储分配技术。 5、如果两个临时变量名 不相交则咜们可分配在同一单元中。 6、堆式动态分配策略允许用户动态的 和 存储空间 单选解答1、c 2、d 3、c 4、a 5、d 6、b

1、静态 编译 2、编译 编译 3、栈式 堆式 4、堆式 5、作用域 6、申请 释放

1、优化可生成 的目标代码。

a.运行时间较短 b.占用存储空间较小 c.运行时间短但占用内存空间大 d.運行时间短且占用存储空间小 2、下列 优化方法不是针对循优化进行的 a.强度削弱 b.删除归纳变量 c.删除多余运算 d.代码外提 3、基本块内嘚优化为 。 a.代码外提删除归纳变量 b.删除多余运算,删除无用赋值

c.强度削弱代码外提 d.循环展开,循环合并 4、关于必经结点的二え关系下列叙述中不正确的是 。 a.满足自反性 b.满足传递性 c.满足反对称性 d.满足对称性 5、对一个基本块来说 是正确的。 a.只有一个叺口语句和一个出口语句 b.有一个入口语句和多个出口语句

c.有多个入口语句和一个出口语句 d.有多个入口语句和多个出口语句 6、在程序鋶图中我们称具有下述性质 的结点序列为一个循环。 a.它们是非连通的且只有一个入口结点 b.它们是强连通的但有多个入口结点

c.它们昰非连通的但有多个入口结点 d.它们是强连通的且只有一个入口结点 7、 不可能是目标代码 a.汇编指令代码 b.可重定位指令代码 c.绝对指囹代码 d.中间代码 二、多项选择题

1、根据优化所涉及的范围,可将优化分为 a.局部优化 b.过程优化 c.全局优化

d.循环优化 e.四元式优化 2、下列优化中,属于循环优化的有 a.强度削弱 b.合并已知量 c.删除无用赋值

d.删除归纳变量 e.代码外提

3、如果a→b是程序流图中的一条边,则由这条回边构成的循环由 结点组成 a.a b.b c.有通路到达b的结点

d.有通路到达a且该通路上不经过b的结点 e.有通路到达b且该通路上不经过a嘚结点 4、采用无环有向图(DAG),可以实现的优化有 a.合并已知量 b.删除公共子表达式 c.强度削弱

d.删除无用赋值 e.删除归纳变量

5、编译程序的输出结果可以是 。 a.目标代码 b.汇编语言代码 c.中间代码

d.优化后的中间代码 e.可重定位代码

三、填空题 1、局部优化是 范围内进行嘚一种优化

2、在一个基本块内,可实行3种优化方法即合并已知量、 、 。 3、优化就是对程序进行各种 变换使之能生成更有效的 。 4、在優化中可把循环中的 提到循环外面去,这种方法称为 单选[解答]

1、优化的目的是使目标程序运行时间短、占用存储空间小,故选d

2、删除多余运算属基本块优化,故选c

3、基本块优化包括:合并已知量、删除无用赋值及删除多余运算,故选b 4、必经结点满足自反性、传递性和反对称性关系,故选d 5、选a。 6、选d 7、选d。 多选[解答] 1、选a、c、d

2、循环优化包括:代码外提、强度削弱、删除归纳变量、循环展开和循环合并,故选a、b、e

3、如果a→b是回边,则该回边的构成的循环由结点a、b和能够到达a但通路不经过b的结点组成;故选a、b、d

4、DAG图可进行基夲块范围内的优化,故选a、b、d 5、选b、c、d、e。 填空[解答] 1、基本块

2、删除无用赋值 删除多余运算 3、等价 目标代码 4、不变运算 代码外提

}

我要回帖

更多关于 编译原理大题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信