中国科学技术大学_第1页
中国科学技术大学_第2页
中国科学技术大学_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中国科学技术大学2009-2010学年第二学期考试试卷(A)考试科目:编译原理和技术得分: 学生所在系:姓名:学号:2、(10分)下而是类型表达式的语法:type T integer I boolean I array|num of type I record fieldjist end I T type1、(15分)从教材第2章的习题中找出一个正规式, 它所表示的语言就是右边的DFA所接受的语言。并请 依据教材上提供的方法确认该DFA是最简的DFAofieldJist T id : type I id : type field Ji st若规左:在记录类型中不能出现数组类型(包括不能出现数组

2、的指针类型)。请重新设汁一 个文法,把该约束体现在文法中,即它和上述文法的区别就是所左义的语言满足这个约朿。3、(10分)根拯教材333 if的递归下降预测分析方法以及图3.8的方式,给第2题题目(而 不是你答案)中的非终结符./?皿/_/讨写一个递归过程(若需要变换文法,则先变换文法)。4、(10分)为第2题题目的文法写一个翻译方案,若类型表达式不满足该题所规左的约束 则报告错误。注:第2题通过重新设计文法,本题通过静态检查,来达到同样的目的。5、(10 分)(1)Java语言的编译器通常把数组分配在堆上。Java数组一般不能静态确左大小应该 不是将它分配在堆上的原因,因为教材上图6.12给

3、岀了一种将不能静态确定大小的数组动 态地分配在活动记录栈上的方法。Java数组一般不能分配在活动记录栈上的原因是什么?(2)将数组分配在活动记录栈上和分配在堆上给程序运行带来什么区别?6、(5分)有人认为,下面C程序中结构体类型record的立义方式可用来动态生成其中a 数组的大小不一样的结构体,以适应某些编程场合的需要。你认为这样的程序能够通过C 编译器的类型检査吗?请说明理由。#include <malloc.h>typedcf stnict double r; int n; float a; record;main() record * p;p = malloc(sizeof

4、(record) + sizeof(float) * 5);p->n = 5: p->a4 = 100.0;7. (15分)对于教材上P172例6.4的程序(见下面C代码),GCC编译器(版本:(GNU) 4.2.3 (Debian4.2.3-5)所生成的优化代码(见下面中间的汇编代码)同书上给出的代码(见下而 左边的汇编代码)略有不同。请指岀该较新版本编译器完成的优化(或采用的不同代码生成 策略)。给一点提示:若把调用语句改成funcQ, j),所生成的优化代码和下面中间的汇编代 码的区别见下而右边的说明。func(i) long i; longj; j=i-l; funcfj)

5、;func:pushl1%ebp1func:1pushl%ebp1movl%esp, %ebp1movl%esp, %ebp1subl$4, %esp1subl$4, %esp1该指令改成subl S8, %espmovl8(%ebp), %edx 1movl8(%ebp), %eax1deci%edx1subl$1, %eax1在该指令和下条指令间movl%edx, -4(%ebp) 1movl%cax, (%esp)1 增加 movl %cax, 4(%esp)movl-4(%ebp), %eax 1callfunc1pushl%eax1leave1callfunc1ret1addl$4,

6、 %esp1.LI:1leave1ret18、(5分)请按教材上图12.4的方式给出第375页中类Point的对彖表示。9、(10分)下而左右两边是一个C程序的两个源文件的内容:#include <stdio.h>Iinclude <stdio.h>char *p = “0123456789"Ichar p10);f() Imain() printf C4%sif p);If(); pl = T;f();)I运行目标程序所得到的结果如下(编译器是GCC: (GNU) 4.2.3 (Debian 4.23-5): 0123456789Segmentation fault请描述该目标程序各数据区的内容,并回答为什么运行时会出现Segmentation faults10、(10分)下而的C程序分别经非优化编译和2级以上(含2级)的优化编译后,生成的 两个目标程序运行时的表现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论