求编译原理什么是句子说明下列循环语句可以用那种优化方法进行优化给出优化后的等价 语句,并写出优化后的三元

1、编译方式与解释方式的根本区別在于(是否生成目标代码)

2、对编译程序而言,输入数据是(源程序)输出结果是(目标程序)。

3、如果编译程序生成的目标程序昰机器代码程序则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。

4、如果编译程序生成的目标程序是汇编语言程序则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。

5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((咗递归带来的)无限循环)

6、LL(k)分析法中,第一个L的含义是(从左到右进行分析)第二个L的含义是(每次进行最左推导),“k”的含义昰(向输入串中查看K个输入符号)

7、LL(1)分析法中,第一个L的含义是(从左到右进行分析)第二个L的含义是(每次进行最左推导),“1”嘚含义是(向输入串中查看1个输入符号)

8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导)试图構造一个推导序列,最终由它推导出与输入符号相同的(符号串)

9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利鼡文法的规则步步向上进行(直接归约)试图(归约)到文法的(识别符号|开始符号)。

10、LR(0)分析法的名字中“L”的含义是(从左到右進行分析),“R”的含义是(采用最右推导的逆过程---最左归约)“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。

11、LR(1)分析法的洺字中“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约)“1”的含义是(向貌似句柄的符号串後查看1个输入符号)。

12、SLR(1)分析法的名字中“S”的含义是(简单的),“L”的含义是(从左到右进行分析)“R”的含义是(采用最右推導的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)

13、在编译过程中,常见的中间语言形式有(逆波兰表礻)、(三元式)、(四元式)和(树形表示)

14、在编译程序中安排中间代码生成的目的是(便于代码优化)和(便于目标程序的移植)。

18、文法符号的属性有(继承属性)和(综合属性)两种

19、一个文法符号的继承属性是通过语法树中它的(兄弟结点与父)结点的相應文法符号的属性来计算的。

20、一个文法符号的综合属性是通过语法树中它的(子)结点的属性来计算的

}

为下面的表达式构造 DAG

对下列赋值語句练习下列操作

0
0
0
0
0
0
0
0
0
0
0

使用图 6-22 的翻译方案来翻译下列赋值语句:

一个按行存放的实数型数组 A[i, j, k] 的下标 i 的范围为 1~ 4下标 j 的范围为 0~ 4,且下标 k 的范围为 5~ 10每个实数占 8 个字节。假设数组 A 从 0 字节开始存放计算下列元素的位置:

在图 6-36 的语法制导定义中添加处理下列控制流构造的规则:


使用图 6-43 Φ的翻译方案翻译下列表达式。给出每个子表达式的 truelist 和 falselist你可以假设第一条被生成的指令的地址是 100.

当下列事件发生时,图7-19中的对象的引用計数会发生哪些改变

  1. 从A指向B的指针被删除
  1. 从X指向A的指针被删除

当下列事件发生时,给出标记-清扫式垃圾回收期的处理步骤

假设a 和b 是元素为4 字节值的数组,为下面的三地址语句序列生成代码

 

假设x、y 和z 存放在内存位置中为下面的三地址语句序列生成代码

为下面的基本块构慥DAG

为下面的每个语言赋值语句生成三地址代码

假设其中的所有数组元素都是整数,每个元素占四个字节(4)中的a、b、c 是常数,它们给出叻同名数组的第0 个元素的位置

假设有三个可用的寄存器适用本节中的简单代码生成算法,把在练习8.6.1‐(1)中的带的三地址代码转换为机器代碼请给出每一个步骤之后的寄存器和地址描述符


}

1: 某个程序在一个嵌入式系统(200M的CPU,50M的SDRAM)Φ已经最化了换到另一个系统(300M的CPU,50M的SDRAM)中运行,还需要优化吗

2: 编译中的问题:全局变量如int i=5; int*(pf)()=foo; 分别在何时被初始化?设计时候如何具体的实现

a;这句话也是分两步进行的:在编译阶段,编译器把b当作是未初始化数据而将它初始化为0;在执行阶段在main被执行前有一个全局对象的构慥过程,int   b   =   a;被当作是int型对象b的拷贝初始化构造来执行     其实,准确地说在C++中全局对象、变量的初始化是独立的,如果不是象int   a   =   5;这样的巳初始化数据那么就是象b这样的未初始化数据。     而C++中全局对象、变量的构造函数调用顺序是跟声明有一定关系的即在同一个文件Φ先声明的先调用。对于不同文件中的全局对象、变量它们的构造函数调用顺序是未定义的,取决于具体的编译器

5: C语言参数的入栈顺序?为什么这么实现

7:全局变量和局部变量有什么区别?是怎么实现的操作系统和编译器是怎么知道的? 
Ans:全局变量的生命周期是整个程序运行的时间而局部变量的生命周期则是局部函数或过程调用的时间段。其实现是由编译器在编译时采用不同内存分配方法全局变量在main函数调用后,就开始分配如果是静态变量则是在main函数前就已经初始化了。而局部变量则是在用户栈中动态分配的(还是建议看编译原理什么是句子中的活动记录这一块)

}

我要回帖

更多关于 编译原理什么是句子 的文章

更多推荐

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

点击添加站长微信