编译原理第10章运行时的存储组织与分配

合集下载

编译原理期末考试试卷及答案

编译原理期末考试试卷及答案

一. 填空题(每空2分,共20分)

1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静

态存储分配方案和动态存储分配方案,而后者又分为(1) 和 (2) 。 2. 规范规约是最(3)规约。

3。 编译程序的工作过程一般划分为5个阶段:词法分析、(4) 、语义分析与中间代码生成,代码优化及(5) 。另外还有(6)和出错处理。

4.表达式x+y *z/(a+b )的后缀式为 (7) 。 5.文法符号的属性有综合属性和 (8)。

6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1。。20]某个元素a [i ,j ]的

地址计算公式为(9)。

7.局部优化是局限于一个(10)范围内的一种优化。

二. 选择题(1-6为单选题,7-8为多选题,每问2分,共20分)

1. 一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,一个( ),以及一组( )。

A . 字符串

B . 产生式

C . 开始符号

D . 文法 2.程序的基本块是指( )。

A . 一个子程序

B . 一个仅有一个入口和一个出口的语句

C . 一个没有嵌套的程序段

D . 一组顺序执行的程序段,仅有一个入口和一个出口 3。 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。 A . 自左向右 B . 自顶向下 C . 自底向上 D . 自右向左 4.在通常的语法分析方法中,( )特别适用于表达式的分析. A . 算符优先分析法 B . LR 分析法 C . 递归下降分析法 D . LL (1)分析法 5.经过编译所得到的目标程序是( )。

信息学院06版《编译原理》课程教学大纲

信息学院06版《编译原理》课程教学大纲

《编译原理》课程教学大纲

课程编号:(先不填)

英文名称:Compiler Construction Principles

课程类型:专业基础课

学时/学分:40+16/3.5

授课对象:本科生

先修课程:高等数学,数据结构,C程序设计

课程简介:

本课程是计算机专业学生的一门重要专业基础课,本课程属于计算机科学与技术专业的一门重要的专业必修课。通过本课程学习,使学生掌握编译程序的一般构造原理,包括语言基础知识、词法分析程序设计原理和构造方法。各种语法分析技术和中间代码生成符号表的构造、代码优化、并行编译技术常识及运行时存储空间的组织等基本方法和主要实现技术。它有一定的理论性,又有一定的实践性, 尤其是本课程的知识与计算机应用中很多领域有紧密联系与广泛应用。了解与掌握本课程的基本内容将有利于学生提高专业素质和适应社会多方面需要的能力。

教学目的和要求:

教学目的:培养学生掌握构造编译程序的基本原理与设计方法,为培养计算机语言与大型应用程序的开发人才打下良好的基础。本课程坚持理论与实践教学并重的原则,理论上主要叙述语言和文法的形式定义、自动机理论、词法分析、语法和语义分析、优化和代码生成等环节的基本理论和方法,与此同时,通过上机实习构造简单语言的编译程序等编辑器使学生掌握开发应用程序的基本方法。

教学要求:通过本课程的学习, 学生应掌握形式语言理论与编译实现相关的基础概念, 了解与掌握编译程序构造的基本原理与技术, 从形式语言理论的角度, 进一步认识与理解程序设计语言及其与编译程序的联系。做习题是理解课程中基本概念、培养思考能力和解题能力的重要方面, 要求学生认真做好习题, 并注意解题规范化。学生也应重视配合教学, 做好上机实习。

编译原理第九章 运行时存储空间组织

编译原理第九章  运行时存储空间组织
临时工作单元 内情向量 局部变量 形式单元 参数个数 返回地址 老SP
临时工作单元 内情向量 局部变量 形式单元 参数个数 返回地址 老SP ··· ···
C语言过程调用与返回
Par Ti (i+3)[TOP] := Ti (传值) 或 (i+3)[TOP] := addr(Ti)(传地址)
Call P,n 1[TOP] := SP 3 [TOP] := n JSR P (转P) SP := TOP+1 1[SP] := 返回地址 TOP := TOP + 活动单元数
9.5 .1 静态链和活动记录
临时单元 内情向量 简单变量
中间代码生成时产生的临时变量; 数组的内情向量; 过程中局部变量;
形参单元
运行时存储实参内容;
形参个数
过程参数个数;
静态链
指向直接外层活动记录的地址
返回地址
运行时存储调用程序的返回点
Байду номын сангаас老SP
动态链,指向直接调用过程活动记录
注意静态链(直接外层)和动态链(过程调用变化)的区别
1 procedure S var …
begin… Q…end {R} Begin … S… end {P}
• 当前过程访问局部变量,可以使用简单 栈式存储结构
• 关键问题:
– 当前过程如何访问非局部变量

编译原理第10章 存储组织

编译原理第10章 存储组织
另外,同样的一个存储位置,可能不同 运行时刻分配给不同的数据对象。
存储分配结构图
若主程序调用了过程Q,Q又调用了R,在R进入运行后的存 储结构如图(a)所示。
若主程序调用了过程Q,Q递归调用自己,在Q过程第二次进 入运行后的存储结构如图(b)所示。
若主程序先调用过程Q,然后主程序接着调用R,且Q过程不 调用Q和R,这时Q和R进入运行后的存储结构分别如图(c)和 (d)所示。
分程序结构用栈式存储分配实现,是因为一 个声明的作用域不会落在它出现的分程序之 外,该声明的空间可以在分程序进入时分配。
无参过程
把分程序看成一个“无参过程”,只不过是 在该分程序前调用,分程序之后返回,分程 序在哪里定义就在哪里被调用。
效率低下的原因 解决效率低的办法
效率低下的原因
第一分程序不存在被调用的问题,不必要在 进入一个分程序时,将连接数据(如动态链、 返回地址等)和display都放进活动记录中;
假如过程sort激活(调用)了过程quicksort,这时存储 栈小的情形示意如下图所示,其中在quicksort过程 活动记录中有一(或一些)存储单元(用斜线描绘)用以 记录过程quicksort以引用sort中定义的变量a和x。
增设存储链
在活动记录过程中增设存取链,指向包含该 过程的直接外层过程的最新活动记录的起始 位置。
栈式存储分配的实现

计算机专业课程体系与操作系统课程的衔接

计算机专业课程体系与操作系统课程的衔接

计算机专业课程体系与操作系统课程的衔接

摘要:操作系统课程是计算机科学与技术以及软件工程一级学科的核心课程之一。文章讨论该课程与程序设计、数据结构、计算机原理、编译原理、体系结构等课程之间的内容衔接关系,针对相关章节提出教学建议并就国防科技大学的具体实施情况进行简单讨论。

关键词:操作系统;课程衔接;计算机课程群

0 引言

操作系统原理课程是计算机科学与技术以及软件工程一级学科的必修核心课程之一。该课程不仅能够帮助学生了解操作系统中的相关概念,而且能够帮助学生理解操作系统运行机制以及操作系统的重要设计思想,进而帮助学生建立和强化计算思维。

在整个计算机专业课程群中,操作系统课程一般在本科三年级开设,有若干前导以及后继课程。以国防科技大学计算机专业的课程开设为例,笔者讨论该课程与程序设计、数据结构、算法设计与分析、汇编语言等前驱课程之间的联系;还讨论诸如编译原理、体系结构、并行程序设计等后继课程的相关知识点,对如何讲授这些前驱课程中的对应知识点提出若干教学建议,分析如何为后继课程中的相关知识点作铺垫;同时,还以国防科技大学具体情况为例,探讨课程衔接的具体措施和教学环节。

1 与前导课程衔接

1.1 与计算机程序设计课程的衔接

计算机程序设计是除大学计算机基础之外的第一门计算机专业课程。该课程对操作系统原理以及操作系统课程实验(尤其是后者)的铺垫内容较多,且较为重要。以C语言为例,对于操作系统课程较为重要的是控制结构、函数、数组、指针以及文件操作等方面的内容。此外,代码阅读及分析能力的培养也是一个十分重要的方面。

程序设计语言编译原理第三版第10章

程序设计语言编译原理第三版第10章

第十章 优化
10.1 概述 10.2 局部优化 10.3 循环优化(略) 10.4 数据流分析(略)
§10.1 概述
一、优化的目的是为了产生更高效的代码,需遵循以下 的原则:
1.等价原则:经过优化后不应改变程序运行的结果。 2.有效原则:使优化后所产生的目标代码运行时间较短,
占用的存储空间较小。
§10.2 局部优化
2. (1)如果NODE(B)是标记为常数的叶结点,则转2(3),否则转3(1) (2)如果NODE(B)和NODE(C)都是标记为常数的叶结点,则转 2(4),
否则转3(2). (3)执行op B(即合并已知量),令得到的新常数为p。
如果NODE(p)是处理当前代码时构造出来的结点,则删除它。 如果NODE(p)无定义,则构造一用p做标记的叶结点n。 置NODE(p)=n,转4。 (4)执行B op C(即合并已知量),令得到的新常数为p。 如果NODE(B)或NODE(C)是处理当前代码时新构造出来的结 点,则删除它。 如果NODE(p)无定义,则构造一用p做标记的叶结点n。置
§10.2 局部优化
3. (1)检查DAG中是否已有一结点,其唯一后继为NODE(B)且标记 为
op(即找公共子表达式)。如果没有,则构造该结点n,否则就把 已有的结点作为它的结点并设该结点为n。转4。 (2)检查DAG中是否已有一结点,其左后继为NODE(B),右后继为 NODE(C),且标为op(即找公共子表达式)。如果没有,则构造 该结点n,否则就把已有的结点作为它的结点并设该结点为 n。转4。

编译原理——运行时存储空间组织

编译原理——运行时存储空间组织

临时单元T:
(a+b的值)
5
&b:
3
&a:
2
z:
&a
y:
&a
x:
T
调用者数据区
执行语句y:=y+1后
临时单元T:
(a+b的值)
5
&b:
3
&a:
3
被调用者数据区
z:
&a
y:
&a
x:
T
调用者数据区
被调用者数据区
参数传递方式为传地址
执行语句z:=z+x后
临时单元T:
(a+b的值)
5
&b:
3
&a:
8
调用者数据区
参替换成相应实参文字替换
Procedure swapn;m:real;
var j:real;
begin
传名过程
j:=n;
n:=m;
m:=j;
end
调用swapi;ki的过程: j:=i; i:=ki; ki:=j;
对于下面程序: Procedure p x;y;z ; begin y:=y+1; z:=z+x; end; p begin a:=2; b:=3; p a+b ; a ; a print a end 若参数传递的方法分别为 1传名2传地址 3传结 果 4传值 执行时所输出的a分别是什么

编译原理第十章目标程序运行时的存储组织

编译原理第十章目标程序运行时的存储组织

编译原理第十章目标程序运行时的存储组织

课前索引

【课前思考】

◇回顾通常的编译过程,能否找到本章所讲内容在哪个过程?

◇为什么编译程序要考虑目标程序运行时存储区的管理与组织?

◇请归纳C语言与PASCAL语言的程序结构与数据类型的不一致点

【学习目标】

全面熟悉目标程序运行时存储区的整体布局;每种存储区的组织方式与管理方法;并通过实例着重掌握,对同意过程嵌套定义的情况,栈式动态存储分配的组织方式与运行时进栈退栈的活动实现方法。

【学习指南】

在代码生成前,编译程序务必进行目标程序运行环境的配置与数据空间的分配。通常来讲,假如编译程序从操作系统中得到一块存储区以使目标程序在其上运行,该存储区需容纳生成的目标代码与目标代码运行时的数据空间。我们这里所说的运行时的存储区组织,是指目标程序运行时的数据空间的管理与组织。

【难重点】

◇目标程序运行时,存储区域的整体布局,与各区域的作用。

◇各类不一致类型的数据表示。

◇同意过程嵌套定义的情况,栈式动态分配的组织管理。

◇对过程的调用,进入与退出时,栈式动态分配的工作原理。

◇过程活动纪录的各项内容与它们的作用,与活动纪录的组织方式。

◇过程参数传递的不一致方式。

【知识结构】

从逻辑上看,在代码生成前,编译程序务必进行目标程序运行环境的配置与数据空间的分配。通常来讲,假如编译程序从操作系统中得到一块存储区以使目标程序在其上运行,该存储区需容纳生成的目标代码与目标代码运行时的数据空间。数据空间应包含:用户定义的各类类型的数据对象(变量与常数)所需的存储空间,作为保留中间结果与传递参数的临时工作单元,调用过程时所需的连接单元,与组织输入/输出所需的缓冲区。目标代码所占用空间的大小在编译时能确定。有些数据对象所占用的空间也能在编译时确定,其地址能够编译进目标代码中。而有些数据对象具有可变体积与待分配性质,无法在编译时确定存储空间的位置。

计算机编译原理

计算机编译原理

专升本-计算机编译原理

模拟卷一

单选

1、文法描述的语言是(B)

○A a|(bc)*

○B、(a|bc)

○C、(alcb)*

OD、(alb)*c

2、通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括_A-.

○A、表格处理和出错处理

○B、符号执行器

○C、解释器

○D、模拟执行器

3、有限自动机识别的语言是(C)。

○A、上下文有关文法语言

○B、上下文无关文法语言

○C、正规文法语言

○D、短语文法语言

4、在规范归约中用来刻画可归约串的是(A)。

OA、句柄

○B、最左素短语

○C、短语

○D、素短语

5、文法G产生的 A 的全体是该文法描述的语言。

OA、句子

○B、终结符集

○C、句型

○D、非终结符集

6、文法G[E]:

该文法句型E+F·(E+T)的简单短语是下列符号串中的_

①(E+T)②E+T ③F ④F·(E+T)

可选项有:

OA、②和③

OB、③和④

OC、①和③

OD、③

7、已知文法G1={A,B,C},{a,b,c},P,A),其中P由以下产生式组成:

A→abclaBbc Bb→bB Bc→Cbcc bC→Cb aC→aaB aC→aa

此文法所表示的语言是

OA.(abc)nIn>0}

○B、([anbncn|n>0}

O C、(anbncnln=0}

OD、{(ab)ncnn>0}

8、文法G[S]=(a},{S,P),S,(S→a|aP,P-aS),该文法所描述的语言是( )。OA L(G[S)=(a2zlj20}

○B、L(GI[S)=(a2i+1P1)

编译原理选择

编译原理选择

1. 编译方法中自底向上的语法分析算法有 C 。

①简单优先分析方法②算符优先分析方法③递归子程序法

④LL(K)分析法⑤SLR分析法⑥LR(K)方法

⑦LALR(K)方法⑧预测分析方法

A、①②③⑧

B、④⑤⑥⑦

C、①②⑤⑥⑦

D、③④⑧

E、①②③⑤⑥

2.编译程序生成的目标程序B是机器语言的程序。

A、一定

B、不一定

3. 编译程序是将高级语言程序翻译成 B 。

A、机器语言程序

B、汇编语言程序或机器语言程序

C、汇编语言程序或高级语言程序

D、机器语言程序或高级语言程序

4. 编译程序众的语法分析器接受以 C 为单位的输入,并产生有关信息工以后各阶段适用。

A、表达式

B、产生式

C、单词

D、语句

5. 编译过程中,比较常见的中间语言有 D 。

①波兰表示②逆波兰表示③三元式④四元式⑤树形表示

A、①②④

B、②③④

C、①③④⑤

D、②③④⑤

6.编译程序在优化时, B 用到源程序中的注释。

A、可能要

B、不可能

7. 编译程序必须完成的工作有A。

①词法分析②语法分析③语义分析

④代码生成⑤中间代码生成⑥代码优化

A、①②③④

B、①②③④⑤

C、①②③④⑤⑥

D、①②③④⑥

E、①②③⑤⑥

8.编译过程中,语法分析器的任务是( B ) 。

①分析单词是怎样构成的②分析单词串是如何构成语句和说明的

③分析语句和说明是如何构成程序的④分析程序的结构

A、②③

B、②③④

C、①②③

D、①②③④

9.编译程序在其工作过程中使用最多的数据结构是D。

A、线性表

B、链表

C、表

D、符号表

1.一个句型中的最左(B ) 成为该句型的句柄。

A、短语

B、简单短语

C、素短语

编译原理教学大纲.docx

编译原理教学大纲.docx

编译原理教学人纲

课程编号:090017 适用专业:计算机科学与技术

学时数:72 学分数: 4 ___________

1.课程类别:编译原理(PHnciples of Comp订ing)的授课对象是计算机科学与技术专业木科生,属专业必修课中的基础课。

2.教学H标:木课程要求学生学握与程序设计语言编译实现冇关的形式语言理论基木概念,学握编译程序构造的一般原理、基木设计方法和主要实现技术,并能将一些基木方法和技术运用到其他程序设计中。

第1章引论

教学时数:2课时

重点难点:重点:编译的基木过程,编译过程度组合。

教学要求:了解:编译和解釋;语法树:程序设计语言范型。理解:编译的基木过程,编译程序的组成成分和遍、前端、后端的概念。

教学内容:

1.1什么是编译程序

1.2编译过程和编译程序的结构

编译过程概述;编译程序的结构;编译阶段的组合

1.3解释程序和一些软件工具

解释程序,解释与编译不同工作模式的比较;处理源程序的软件工具

1.4程序设计语言范型

命令式语言;函数式语言;逻辑语言;面向对象语言

第2章文法和语言

教学时数:6课时

重点难点:重点:文法和语言的形式定义、上下文无关文法及其语法树、句型的分析。难点:句型分析、

£规则。

教学耍求:了解:0型、1塑文法。理解:文法和语言的形式定义,语法树和二义性,形式语言的一般概念。寧握:上下文无关文法,推导,句柄,句型分析。已知上下文无关文法G和句型W,构造出w的推导、最左推导、最右推导、语法树;找出W的短语,直接短语和句柄。

教学内容:

2.1文法的直观概念

2.2符号和符号串

《编译原理》教学大纲

《编译原理》教学大纲

《编译原理》教学大纲

Compiler Principles

一、课程性质

《编译原理》是高等工科院校“计算机科学与技术”、“软件工程”、“信息安全”等专业的一门重要的必修专业基础课。所含内容涉及学科抽象、理论、设计三个形态。在学习编译原理所涉及的知识的同时,掌握问题求解的典型思路和方法,帮助学生从系统层面重新认识程序和算法。

二、课程目标

本课程的教学目标是:通过学习该课程,使学生了解形式语言基本概念和术语、掌握词法分析、语法分析、语义分析及中间代码生成、代码优化、符号表管理、存储组织和分配及代码优化的基本原理和实现方法。通过学习编译程序的构造原理和技术,将有助于深刻理解和正确使用程序设计语言。除此以外,编译原理课程介绍的一些原理、方法和算法并不局限于编译器的构造,也广泛地应用于其他软件的设计与开发。

本课程具有思想素质、知识技能以及能力培养三个层面的通用课程目标:

(一)思想、素质教育目标

目标1.1 在教学过程中,激发学生自豪感与爱国情怀,鼓励学生通过努力学习掌握先进科学技术,服务国家,回馈社会。

目标1.2 在教学过程中,通过课程内容与中国传统文化思想相结合,提升学生的学习兴趣、人文关怀和道德情操,真正做到“传道、授业和解惑”。

(二)知识教学目标

目标2.1 使学生理解编译系统的工作流程和编译器各功能模块的设计原理,能够利用基本原理和方法识别和分析计算机软件开发领域复杂工程问题。

目标2.2 使学生掌握词法分析器、语法分析器开发方法,能够编写词法分析程序和语法分析程序。

(三)能力教学目标

目标3.1使学生理解编译系统的工作流程和编译器各功能模块的设计原理,培养学生抽象思维和逻辑思维能力,能够利用基本原理和方法识别和分析计算机软件开发领域复杂工程问题的特征。

编译原理教学大纲

编译原理教学大纲

编译原理教学大纲

《计算机编译原理》课程大纲

一、适用对象

本课程适用于计算机科学与技术以及相关专业的网络教育、成人教育学生。

二、课程性质

本课程是计算机科学与技术专业学生的专业基础课。编译原理课程是计算机专业的一门主干课程。课程介绍程序设计语言编译程序构造的一般原理、基本设计方法、主要实现技术和一些自动构造工具。首先从剖析一个简单的编译程序PL/0入手,对编译程序设计的基本理论,如有穷自动机、上下文无关文法等给予介绍;对于广泛使用的语法分析和语义分析技术,如递归子程序法、算符优先分析、LR 分析及语法制导翻译等进行了详细的讲解;对编译程序的结构及其各部分功能、实现方法以及整体的设计考虑给予了描述;对编译程序的构造工具进行介绍;同时对面向对象语言的编译程序和构造进行介绍。

前序课程:高级程序语言、离散数学、数据结构、计算机组成原理。

三、教学目的

通过本课程的学习,使学生掌握设计和实现程序设计语言的最基本的理论和技术,掌握编译程序工作原理和构造方法。同时,能够达到去鉴赏、评价和实现某种程序设计语言。主要有如下教学目的:

(1)对编译过程从整体上有一个较清晰的了解,掌握高级语言程序的编译过程。(2)掌握文法、自动机、正规式等编译基本理论知识。

(3)掌握确定的自顶向下的语法分析方法和自底向上的算符优先分析及LR 分析方法。(4)掌握语法制导翻译的语义分析方法,掌握中间代码的优化和目标代码的生成。(5)理解符号表和目标程序运行时的存储组织。(6)了解面向对象语言编译程序的原理和构造。

四、教材及学时安排

教材:张素琴、吕映芝、蒋维杜、戴桂兰,编译原理(第2版),清华大学出版社,2005年2月,ISBN :

编译原理简明教程(第2版)[冯秀芳,崔冬华,段富][电子教案] 第14章

编译原理简明教程(第2版)[冯秀芳,崔冬华,段富][电子教案] 第14章

14.2
面向对象语言的编译
14.2.4 动态绑定
动态绑定是语言处理多态的机制,类的成员函数的行为能根 据调用它的对象类型自动做出适应性调整,而且调整发生在程 序运行时。假定类A包含属性a1、a2和方法f1、f2,类B是类A 的子类,类B增加属性b1和方法f3,并重载类A中的方法f2。 例如: a : A; b : B; a是多态引用,因而根据多态引用规则:a可引用类B的对象, 对方法f2的动态绑定情况如下: a.f2( )引用类A的对象时,绑定类A定义的方法f2;当执 行a: = b之后,绑定类B重新定义的方法f2。 b.f2( )只能绑定类B重新定义的方法f2。
14.2
面向对象语言的编译
14.2.1 单一继承
2.方法编译 编译一个方法类似于编译一个过程:方法被转换成驻存在 指令空间中一个特定地址的机器代码。在语义分析阶段,每个 对象的符号表项中有一个指向其类符号表的指针,每个类的符 号表有一个指向其父类的指针和一张方法的链表,每一个方法 都有一个地址。 ①对于静态方法,一些面向对象语言允许将方法声明为静 态的,调用c.f( )(其中c是类C的对象)时执行的机器代码取决于 变量c的类型。 ②对于动态方法,如果类B中的方法f是从父类A中继承的, 且类B对方法f进行了重载,则编译期间,调用f时无法确定是 类B的一个对象还是类A的一个对象。为了解决该问题,类符 号表必须包含一个向量,该向量中每个方法名对应一个方法实 例。

编译原理期末考试卷和答案

编译原理期末考试卷和答案

一. 填空题(每空2分,共20分)

1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两

种:静态存储分配方案和动态存储分配方案,而后者又分为(1) 和 (2) 。 2. 规范规约是最(3)规约。

3. 编译程序的工作过程一般划分为5个阶段:词法分析、(4) 、语义分析与中间代码生成,代码优化及(5) 。另外还有(6)和出错处理。 4.表达式x+y*z/(a+b)的后缀式为 (7) 。 5.文法符号的属性有综合属性和 (8)。

6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i ,j]的地址计算公式为(9)。

7.局部优化是局限于一个(10)范围内的一种优化。 二. 选择题(1-6为单选题,7-8为多选题,每问2分,共20分)

1. 一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,一个( ),以

及一组( )。

A . 字符串

B . 产生式

C . 开始符号

D . 文法 2.程序的基本块是指( )。

A . 一个子程序

B . 一个仅有一个入口和一个出口的语句

C . 一个没有嵌套的程序段

D . 一组顺序执行的程序段,仅有一个入口和一个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。 A . 自左向右 B . 自顶向下 C . 自底向上 D . 自右向左 4.在通常的语法分析方法中,( )特别适用于表达式的分析。 A . 算符优先分析法 B . LR 分析法 C . 递归下降分析法 D . LL (1)分析法 5.经过编译所得到的目标程序是( )。

《编译原理》课程教学标准

《编译原理》课程教学标准

《编译原理》课程教学标准

第一部分:课程性质、课程目标与要求

《编译原理》是计算机类专业的一门重要专业课。该课程是在学了离散数学、数据结构、高级语言后开设的一门课。本课程目的在于系统地向学生讲述编译系统的结构、工作流程及编译程序各组成部分的设计原理和实现技术,使学生通过本课程的学习后,即掌握编译理论和方法方面的基本知识,也具有设计、实现、分析和维护编译程序等方面的初步能力。

本课程的教学要求是,使学生在学习了本门课程后,使学生掌握编译程序的词法分析、语法分析、语法制导翻译和中间代码生成、代码优化、代码生成等基本理论知识。虽然编译程序是特指将高级程序设计语言翻译成低级语言的软件,但编译程序构造的基本原理和技术也广泛应用于一般软件的设计和实现。通过实验和实践,使学生掌握一般软件的开发技术及过程。

第二部分:教材与学习参考书

本课程采用由清华大学吕映芝、张素琴等人编写的、清华大学出版社2005年出版的《编译原理》一书,作为本课程的主教材。

为了更好地理解和学习课程内容,建议学习者可以进一步阅读以下几本重要的参考书:

l 《程序设计语言编译原理》,陈火旺,国防工业出版社

2 《计算机编译原理》,张幸儿,科学出版社

3 《编译程序设计原理》,杜书敏、王永宁,北京大学出版社

第三部分:教学内容纲要和课时安排

第一章编译程序概论

本章主要介绍编译程序在计算机科学中的地位和作用,介绍编译技术的发展历史,讲解编译程序、解释程序的基本概念,概述编译过程,介绍编译程序的逻辑结构和编译程序的组织形式。

通过这一章的学习,学习者要理解编译程序、解释程序和遍的基本概念;掌握编译过程各阶段的任务和编译程序逻辑结构及其各部分的基本功能。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
储空间的组织与管理,为源程序中的变量分 配存储单元 特点 • 在目标程序运行时进行分配 • 编译时为运行阶段设计好存储组织形式,即为每个 数据项安排好它在数据区中的相对位置
编译原理第10章运行时的存储组织与 分配
10.3 栈式动态存储分配
变量生存期具有嵌套特性,即后进先出的特性(如递归) 进入时:在栈顶为其分配一个数据区 退出时:撤消过程数据区
为运行阶段实现存储奠定基础
编译原理第10章运行时的存储组织与 分配
教学内容
• 10.1 存储组织概述 • 10.2 静态存储分配 • 10.3 栈式动态存储分配 • 10.4 堆式动态存储分配
编译原理第10章运行时的存储组织与 分配
10.1 存储组织概述
运行时存储空间的划分
代码空间
目标代码空间 静态数据空间

数据空间
自由空间

编译原理第10章运行时的存储组织与 分配
过程的活动和活动记录
一个过程的活动:该过程的一次执行。 即每次执行一个过程体,就产生该过程的 一个活动。 活动记录:为了管理过程在一次执行中所 需要的信息,使用一段连续的存储区
编译原理第10章运行时的存储组织与 分配
活动记录的结构
编译原理第10章运行时的存储组织与 分配
再见,see you again
2020/12/13
编译原理第10章运行时的存储组织与 分配
编译原理第10章运行时的存储组织与 分配
练习 下面程序的运行结果是什么?如果把第6行的(i+1)*fact( )改 成fact( )*(i+1)的话,则程序的运行结果是有什么变化?试分析 为什么会有这两种不同的结果。 int fact( ) { static int i=5; if(i==0) return 1; else { i--; return((i+1)*fact( )); //第6行 }} main( ) { printf("factor of 5!=%d\n",fact());}
10.2 静态存储分配
在编译阶段由编译程序实现对存储空间的管理,为 源程序中的变量分配存储单元。
条件
➢在编译时能够确定变量在运行时的数据空间大小 ➢运行时不改变
编译原理第10章运行时的存储组织与 分配
FORTRAN程序的静态分配
编译原理第10章运行时的存储组织与 分配
动态存储分配 在目标程序运行阶段由目标程序实现对存
编译原理第10章运行时的存储组织与 分配
10.4 堆式动态存储分配
变量生存期具有随机交叉特性,即非后进先出的特性(如程序 运行时动态申请存储空间) 给运行的程序划分一个大的存储区(称为堆) 每当需要时可从堆中分得一块 用完之后再退还给堆
编译原理第10章运行时的存储组织与 分配
3rew
演讲完毕,谢谢听讲!
编译原理第10章运行时 的存储组织与分配
2020/12/13
编译原理第10章运行时的存储组织与 分配
S.P 词法分析程序
符 号 表 管 理
语法分析程序 语义分析、生成中间代码
代码优化
错 误 处 理
生成目标程序 O.P
编译程序在编译阶段要为源程序中出现的变量、常量等组
织好在ቤተ መጻሕፍቲ ባይዱ行阶段的存储空间
将这种组织形式通过生成的目标代码体现出来
相关文档
最新文档