func(i1,i2,i3); }
该程序在SUN工作站上的运行结果如下:
Adresses of il,i2,i3=35777773634,35777773640,35777773644 Adresses of j 1 j2j3=35777773524,35777773520,35777773514一 从上面的结果可以看出,func函数的3个形式参数的地址依次升高,而3个局部变量的地址依次降低,试说明为什么会有这个区别。
6.5.21. 在Pascal这类嵌套的分程序结构语言中,如何解决变量的定义域问题?请给出一个
合理的变量表构造方法(简述原理)。
5
※<习题七>
第七章 代码优化与目标代码生成
典型例题: 单项选择题
7.1.1.优化可生成_的目标代码。(陕西省2000年自考题)
a.运行时间较短 b.占用存储空间较小
c.运行时间短但占用内存空间大 d.运行时间短且占用存储空间小 7.1.2.下列—优化方法不是针对循环优化进行的。
a.强度削弱 b.删除归纳变量 c.删除多余运算 d.代码外提 7.1.3.基本块内的优化为_。 (陕西省1998年自考题)
a.代码外提,删除归纳变量 b.删除多余运算,删除无用赋值 c.强度削弱,代码外提 d.循环展开,循环合并 7.1.4.关于必经结点的二元关系,下列叙述中不正确的是__。
a.满足自反性 b.满足传递性 c.满足反对称性 d.满足对称性 7.1.5.对一个基本块来说,_是正确的。(陕西省2000年自考题)
a.只有一个入口语句和一个出口语句 b.有一个入口语句和多个出口语句 c.有多个入口语句和一个出口语句 d.有多个入口语句和多个出口语句 7.1.6.在程序流图中,我们称具有下述性质_的结点序列为一个循环。
a.它们是非连通的且只有一个入自结点 b.它们是强连通的但有多个入口结点 c.它们是非连通的但有多个入口结点 d.它们是强连通的且只有一个入口结点 7.1.7._不可能是目标代码。(陕西省1997年自考题)
a.汇编指令代码 b.可重定位指令代码 c.绝对指令代码 d.中间代码 7.1.8._属于局部优化。
a.代码外提 b.删除多余运算。c.强度削弱 d.删除归纳变量 7.1.9.下面_不能作为一个基本块的入口。
a.程序的第一个语句 b.条件语句转移到的语句 c.无条件语句之后的下一条语句 d.无条件语句转移到的语句 7.1.10.下列—优化方法是针对循环优化进行的。
a.复写传播 b.删除归纳变量 c.删除无用赋值 d.合并已知量
7.1.11.属于基本块的优化为_。(陕西省1997年自考题)
a.删除无用赋值 b.删除归纳变量 c.强度削弱 d.代码外提 7.1.12.经过编译所得到的目标程序是—。 a.二元式序列 b.四元式序列
c.间接三元式 d.机器语言程序或汇编语言程序 7.1.13.一个控制流程图就是具有_的有向图。
a.唯一入口结点 b.唯一出口结点 c.唯一首结点 d.唯一尾结点
多项选择题:
7.2.1.根据优化所涉及的范围,可将优化分为_。 a.局部优化 b.过程优化。 C.全局优化 d.循环优化 e.四元式优化
7.2.2.下列优化中,属于循环优化的有_。(陕西省1997年自考题) a.强度削弱 b.合并己知量 c.删除无用赋值 d.删除归纳变量 e.代码外提
7.2.3.如果a→b是程序流图中的一条边,则由这条回边构成的循环由_结点组成。 (陕西省1999年自考题)
a. a b. b c.有通路到达b的结点
d.有通路到达a且该通路上不经过b的结点 e.有通路到达b且该通路上不经过a的结点
7.2.4. a, b, c是程序流图中的三个结点,_是正确的。(陕西省1998年自考题) a. a DOM b, b DOM c则a DOM c b. a DOM a c. a DOM b则b DOM a d. a DOM b, b DOM a则a=b e. a DOM b. a DOM c则b=c 7.2.5.采用无环有向图(DAG),可以实现的优化有_。(陕西省2000年自考题) a.合并已知量 b.删除公共子表达式 c.强度削弱 d.删除无用赋值 e.删除归纳变量
7.2.6.如果A离开循环L后仍然活跃,则对不变运算S:A:=B op C来说,必须满足下面的几个条件方可将不变运算S提到循环外。 a. A在L中已经定值
b. A在L中其他地方未再定值
c. S所在结点是L的所有出口结点的必经结点 d.S所在结点不是L的所有出口结点的必经结点 e. L中所有A的引用点只有S中A的定值才能到达 7.2.7.编译程序的输出结果可以是_。
a.目标代码 b.汇编语言代码 c.中间代码 d.优化后的中间代码 e.可重定位代码
7.2.8.通过DAG图可实现—优化。
a.合并已知量 b.变换循环控制条件 c.删除多余运算 d.复写传播 e.删除无用赋值 7.2.9.局部优化包括_。
a.删除归纳变量 b.删除多余运算。 c.合并已知量