一  10个选择,一个1分

1.属性依赖父节点的继承属性,则属性为A.综合属性,B.继承属性,C.L属性,D.S属性

2.只有汇编语言,形成编译器依靠 A自展,B移植,C再生

3.编译程序怎么区分标识符的作用域。选项记不清了。一个选项是声明语句和标识符动态什么

另一个选项是声明语句和标识符静态什么

4.考的活跃变量分析,具体记不清,也是最后一个选择,一个选项说的是x的定值从程序点p沿着某个路径走,发现x被引用即x是活跃的,否则x不活跃

剩下的选择想不起来了,不过肯定不难。

二 填空题

1.二义性文法定义

2.给出窥孔优化定义,填窥孔优化

3.寄存器的一道题,类似PPT上这道

4.栈式存储分配,原理用的这部分

有一问给出这条指令ST    0(SP ),   #here + 16  的地址,问返回地址是什么

5.LALR合并同心项集可能会引入新的归约-归约冲突,但不会引入新的移进-归约冲突

三 语法分析

根据上面文法

(1)提取左公因子,并判断改造后的文法是不是LL(1)的

(2)对原来文法(没有经过第一问改造)画出LR(1)自动机

四 词法分析

给一段程序,题目给出了词法单元符号设计要求

(1)词法单元符号设计

(2)给出程序识别的token序列

可以参考习题集第一个题

五 语义分析

给出这个文法,赋值语句可以为a=(b=c),表示c的值给b,b又传给a;(a)=b这种也允许;

(1)设计SDD,而且均为综合属性,判断赋值语句左部是否为左值,是输出Yes否则输出No

(2)根据上一问设计的SDD,把动作改成栈的操作,还有说明栈的作用域(这题不太懂说什么)

六 中间代码生成

int  a[2][10] 
while x>0  do 
 if y>0 &&y<10
    z=a[i][j]  
 else
    z=y

把这个程序翻译为三地址指令,题目还说考虑条件表达式代码短路,当时没看懂短路啥意思

七 运行存储分配

考的display

(1)第一问补全栈

 看上面的图,已经调用了e,但这时栈没补全,需要自己画,还要画控制链的指向(题目会告诉你指向哪里,当时说的指向局部变量开始的地方)

(2)画display

补全display表,补全部分就是我红框圈起来的部分 

八 考的代码优化(图没时间画)

1.判断复制语句能不能删除,复制传播用到哪些数据流分析

2.找所有自然循环,并给出回边

3.循环不变计算外提的条件,题目中循环不变计算能不能外提,不能给出原因,能就画出外提后的图

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐