清华大学软件学院编译原理课件pdf
清华大学编译原理课程第一章ppt课件
ppt课件
26
代码优化
t1 = b* c t2 = t1+ 0 t3 = b* c t4 = t2 + t3 a = t4
t1 = b* c t2 = t1 + t1 a = t2
ppt课件
27
代码优化(code optimization)
Intermediate code optimization
…
position := initial +
rate * 60
ppt课件
20
语义分析
:=
Id1
+
position Id2
initial
Id3
rate
* inttoreal 60
ppt课件
21
术语
语义分析(semantic analysis)
The parsed program is further analyzed to determine whether it conforms to the source language’s contextual constraints:scope rules, type rules
e.g. To relate each applied occurrence of an identifier in the source program to the corresponding declaration.
清华大学学习视频教程下载,有需要的千万别错过
da清华大学(英文名:Tsinghua University),地处北京西北郊繁盛的园林区,是在几处清代皇家园林的遗址上发展而成的。清华大学的前身是清华学堂,始建于1911年,曾是由美国退还的部分庚子赔款建立的留美预备学校。1912年,清华学堂更名为清华学校。1925年设立大学部,开始招收四年制大学生。1928年更名为国立清华大学,并于1929年秋开办研究院。清华大学的初期发展,虽然渗透着西方文化的影响,但学校十分重视研究中华民族的优秀文化瑰宝。
清华大学《运筹学》共40讲学习梦想家园
/thread-232-1-1.html
清华大学《C++语言程序设计》周登文 48讲学习梦想家园
/thread-371-1-1.html
清华大学《数据结构》(c语言)严蔚敏48讲学习梦想家园
/thread-1547-1-1.html
清华大学《计算机文化基础》视频教学共28讲学习梦想家园
/thread-233-1-1.html
清华大学《计算机原理》王诚 64讲学习梦想家园
/thread-328-1-1.html
清华大学《模式识别》林学訚 32讲学习梦想家园
/thread-375-1-1.html
清华大学《计算机网络体系结构》汤志忠 48讲学习梦想家园
/thread-374-1-1.html
清华大学《汇编语言程序设计》温冬婵 64讲学习梦想家园
/thread-356-1-1.html
清华大学《JA V A编程语言》许斌32讲学习梦想家园
/thread-354-1-1.html
清华大学《人工智能原理》朱晓燕48讲学习梦想家园
编译原理第一章编译原理引论
C++、C#、Java 类型安全的语言:Java没有指针,也不允许指针算术。它用无用单元收集机制来自动地释放那
关于学习编译原理
学好编译原理的前提: 掌握形式化描述方法,上课注意听讲,课后按时完成作业,做好预习和复习。 阅读PL0编译程序,独立完成实验,从实际中理解原理。 自己动手编写一个完整的编译程序,提高动手能力。
Thanks for your time! Questions & Answers
任务: 把中间代码变换成特定机器上的目标代码。 依赖于硬件系统结构和机器指令的含义 目标代码三种形式:
绝对指令代码: 可直接运行 可重新定位指令代码: 连接装配, 汇编指令代码: 需要进行汇编
符号表
1
position
...
2
initial
...
3
rate
...
编译过程 符号表管理器
源程序 词法分析器 语法分析器 语义分析器 中间代码生成器 代码优化器 代码生成器 目标程序
编译器技术的应用
高级语言的实现 高级编程语言易于编程,但程序运行较慢 低级语言编程时可实施更有效的控制方式,得到更有效的代码,但难编写、易出错、难维护 流行编程语言的大多数演变都是朝着提高抽象级别的方向 每一轮编程语言新特征的出现都刺激编译器优化的新研究
编译原理课程设计-词法分析器的设计与实现
课程设计(论文)任务书
软件学院学院软件测试专业 2 班
一、课程设计(论文)题目词法分析器的设计与实现
二、课程设计(论文)工作自2014 年 6 月16 日起至2014 年6 月 21 日止。
三、课程设计(论文) 地点: 软件学院实训中心
四、课程设计(论文)内容要求:
1.本课程设计的目的
进一步培养学生编译器设计的思想,加深对编译原理和应用程序的理解,针对编译过程的重点和难点内容进行编程,独立完成有一定工作量的程序设计任务,同时,强调好的程序设计风格,并综合使用程序设计语言、数据结构和编译原理的知识, 熟悉使用开发工具VC /JA V A/C#/.NET 。
2.课程设计的任务及要求
1)课程设计任务:
词法分析器的设计
词法分析器的实现
扫描器的设计与实现
2)创新要求:
在到达基本要求后,可进行创新要求。
3)课程设计论文编写要求
(1)课程设计任务及要求
(2)设计思路--工作原理、功能规划
(3)详细设计---数据分析、算法思路、功能实现(含程序流程图、主要代码及注释)、界面等。
(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。
(6)报告按规定排版打印,要求装订平整,否则要求返工;
(7)课设报告的装订顺序如下:封面---任务书---中文摘要---目录----正文---附录
(代码及相关图片)
(8)严禁抄袭,如有发现,按不及格处理。
4)课程设计评分标准:
(1)学习态度:20分;
《编译原理》教学大纲
《编译原理》教学⼤纲
《编译原理》教学⼤纲
适⽤专业:软件⼯程专业
总学时:(讲授/理论40学时,实验/技术/技能0学时,上机/课外实践0学时)
先修课程:《C语⾔程序设计》、《离散数学》、《汇编语⾔程序设计》、《数据结构》
(⼀)本课程地位、性质和任务
《编译原理》课程是计算机专业学⽣的⼀门重要专业基础课,通过本课程学习,使学⽣掌握编译程序的⼀般构造原理,包括语⾔基础知识、词法分析程序设计原理和构造⽅法。各种语法分析技术和中间代码⽣成符号表的构造、代码优化、并⾏编译技术常识及运⾏时存储空间的组织等基本⽅法和主要实现技术。使学⽣掌握编译程序构造的基本原理、设计⽅法和实现技术,具有设计、实现、分析和维护编译程序德⽅⾯的基本技能,为今后从事应⽤软件和系统软件的开发打下⼀定的理论和实践基础。它有⼀定的理论性,尤其是本课程的知识与计算机应⽤中很多领域有紧密联系与⼴泛应⽤。了解与掌握本课程的基本内容将有利于学⽣提⾼专业素质和适应社会多⽅⾯需要的能⼒。
培养学⽣掌握构造编译程序的基本原理与设计⽅法,为培养计算机语⾔与⼤型应⽤程序的开发⼈才打下良好的基础。
(⼆)课程教学的主要内容及基本要求
第1章概述
1.1程序设计语⾔与编译程序
1.2编译过程和编译程序的结构
1.3编译程序的设计
1.4编译程序的发展及应⽤
第2章⾼级语⾔设计基础
2.1符号和符号串
2.2⽂法与语⾔
2.3⾼级语⾔的设计
2.4语⾔设计实例
第3章词法分析
3.1词法分析的任务和功能
3.2词法分析器的设计
3.3正规⽂法、正规式与有穷⾃动机
3.4词法分析程序的⾃动⽣成
“编译原理专题训练”课程介绍
“编译原理专题训练”课程介绍
摘要:“编译原理专题训练”是清华大学为计算机科学与技术系本科生开设的实践类限选课,旨在提高学生的实践能力。课程首次将开放源代码软件GCC和Open64作为实验框架引入实践教学,引导学生参与大型开源软件开发和维护活动,基于具有工业水准的真实软件开展实践。本文重点介绍了该课程在我校开设的基本情况,以期给大家更多的启示。
关键词:编译原理;实践;开源软件;GCC
实践能力是计算机专业学生走向未来科研和工作岗位最为重要的专业技能之一。清华大学历来重视实践教学,在学校“985工程”二期本科人才培养项目的统一规划框架下,我校从2003级本科生开始,为计算机科学与技术系本科生开设了一系列实践类限选课,“编译原理专题训练”便是其中重要的一门。课程的目的是加强学生对系统软件的理解和把握,帮助学生通过实践的方式巩固理论知识,提高学生的软件开发能力。
1课程特色
清华大学“编译原理”课程面向计算机专业所有学生,培养学生学习掌握本专业必备的编程语言设计实现原理与技术,强调常见语言特征的实现原理与技术,而不讲授实际深层次语言特征的实现,也不涉及培养可胜任工业界实际编译系统开发人员的需求。
“编译原理专题训练”是“编译原理”的后续课程和有效补充,是一门限选课程,一方面体现某些高级编译技术的特点(如强调优化技术等),另一方面可以为有兴趣从事工业界实际编译系统开发工作(包括嵌入式系统开发)的学生提供必要的知识和技能储备(开源编译系统,相关工具链,参与实际的研究课题)。
因此,“编译原理专题训练”讲解部分基于工业界广泛采用的开源软件GCC,具体内容可浏览,以编程语言编译系统框架为主线安排实验。实验平台则率先采用开源软件GCC和Open64,具体内容可浏览,通过实验掌握词法分析、语法分析、中间表示、优化和目标代码生成以及交叉编译方面的基本技术和相关工具。
3.5节 语法分析的自动生成-编译原理及实践教程(第3版)-黄贤英-清华大学出版社
语法分析工具介绍
• Bison ——是一个自由软件,可用于所有常见的操作系统。
把LALR形式的上下文无关文法描述转换为可以分析该文 法的C或C++程序。在新近版本中,增加了对GLR(通用 LR”)语法分析算法的支持
• JavaCC(Java Compiler Compiler) ——是一个用JAVA开发
• SableCC——是一个用来生成编译器和分析器的面向对象
的框架。这个框架基于两个基本的设计决策:利用面向对 象技术自动构建精确的典型的抽象语法树;使用经过扩展 的Visitor访问者模式来生成tree-walker类。
• 还有很多语法分析器生成工具,比如GOLD、CoCo/R、
Beaver、JTopas、Runcc、CUP、SJPT、Chaperon
的最受欢迎的语法分析生成器
• Jflex——是一个Java的词法/语法分析生成器
• Jison ——JavaScript解析器。Jison 将一个上下文无关语
法作为输入,输出对应的JavaScript代码,类似Yacc
• Grammatica——C#和Java的语法剖析器生成器。相对于
其它一些类似的工具如yacc和ANTLR有了更好的改进:创 建了更好的注释和易读的源代码/拥有错误自动恢复并能 够详述错误信息/支持语法、词法测试与调试.
%%
编译原理第三版 第一章 引论PPT教学课件
✓ 内存分层
编译器优化历来集中在优化处理器的执行上,但是 现在更强调要使内存分层更有效
2020/12/12
wk.baidu.com
14
新计算机体系结构的设计
✓ 现在计算机系统的性能不仅仅取决于它的原 始速度,还取决于编译器是否能生成充分利 用其特征的代码。
✓ 在现代计算机体系结构的研究中,在处理器 的设计阶段就开发编译器,并将编译生成的 代码在模拟器上运行,以评价拟采用体系结 构的特征。
特点:逐条语句地分析和执行,不生成目标程 序。如:Basic,Prolog。
✓ 优点:易于查错 ✓ 不足:效率低,运行速度慢
2020/12/12
5
编译程序
编译程序是把用高级语言编写的源程序转换成 低级语言(如汇编语言或机器语言)表示的目 标程序的一种语言翻译程序。
特点:对整个程序进行分析,翻译成等价的目 标程序后执行。如:Pascal,Fortran,C
✓ 数据库查询解释器。 数据库查询由一些谓 词组成,这些谓词由包含关系运算的布尔 表达式组成,可以被解释执行,也可以被编 译成搜索数据库的命令
2020/12/12
13
针对计算机体系结构的优化
计算机体系结构的迅速演化引起对新的编译器 技术的需要 ✓ 并行编译
编译器重新整理指令,使得指令级并行更有效。 编译器从传统的串行程序自动生成并行代码,使之
编译原理第1章 概述
四、学时安排及评分标准
讲课42学时 12学时上机(词法、语法) 要交实验报告 考试占70% 平时占30%,{ 作业,考勤,实验} 只讲授部分章节
五、参考书
[1]吕映芝著,编译原理,清华大学出版社 [2]陈火旺、钱家骅、孙永强著,编译原理
主讲人:蔡琼
第0章 前言
一、本课程的研究内容: 主要研究:设计和构造编译程序的基
本原理和基本方法
二、编译原理在软件设计中的应用 1、将一种语言翻译成另一种语言 2、编译理论比较成熟、是软件中发展最成
熟的一个分支,已形成一套系统化理论 和方法,学会程序设计技巧和算法。
三、课程要求:
1、要用“循环”的观点来学习这门课程。 2、学习思考中用“对比”方法,尽量理解
的四元式为:
( * , 2, 3.1416, T1 ) ( * , T1 , r , T2 ) (:= , T2 , , l )
五. 目标代码生成:根据中 间代码和其它有关信息, 按照机器的具体指令格 式生成相应的目标程序。
虽然表达方式不同,但语义等价
六 . 错误检查和处理程 序:好的编译程序应 具有广泛的查错能力 和一定的“纠错”能 力,并能准确的报告 错误的种类和发生错 误的地点。
国防科技大学出版社 [3]杜淑敏著,编译程序设计原理、北京航空
编译原理清华大学导论
§1.1 什么叫编译程序
使用过现代计算机的人都知道,多数用户是应用高级语言来实现他们所需要的计算的。现代计算机系 统一般都含有不止一个的高级语言编译程序,对有些高级语言甚至配置了几个不同性能的编译程序,供用 户按不同需要进行选择。
要在计算机上执行用高级语言(或汇编语言)编写的程序,必须通过特定的途径来进行,也就是要通 过翻译程序把用高级语言(或汇编语言)编写的程序翻译成为机器语言构成的程序,计算机才能执行。
编译原理清华大学导论
课程内容
❖ 介绍编译器构造的一般原理和基本实现方法 ❖ 理论知识:形式语言和自动机理论、语法制导翻译的定义和属性文法等 ❖ 形式化描述技术 ❖ 对编译原理和技术的宏观理解,注意力无需分散到枝节算法,无需偏向于某种源语言或目标机器
学习的意义
❖ 对编程语言的设计和实现有深刻的理解,对和编程语言有关的理论有所了解,对宏观上把握编程 语言来说,起一个奠基的作用。
(3)掌握典型的几种语法分析方法的基本原理和实现方法;
(4)掌握语法制导方法在语义分析中的应用和中间代码生成方法;
(5)掌握存储分配的基本思想和实现方法;
(6)掌握代码优化及代码生成的方法。
学习向导
《编译原理》课程是理论性较强的课程。其特点是概念多、内容抽象。尤其是文法、形式语言及自动机 的概念是计算机专业的理论学习和研究的基础。掌握这些基本理论、原理和技术,对于培养同学们对事物的 抽象能力以及分析问题和解决问题的能力大有帮助。
编译原理课后题答案【清华大学出版社】ch8
《编译原理》课后习题答案第八章
103 (-, (3), /) 104 (+, a, b) 105 (+,(5),c) 106 (- (4), (6))
间接三元式:
间接三元式序列 100 (+,a, b) 101 (+,c, d) 102 (*,(1), (2)) 103 (-,(3), /) 104 (+,(1), c) 105 (-,(4), (1))
/* A and B and C>D 的四元式 */
/* A < B 的四元式 */ /* F:=1 */ /* F:=0 */
[典型例题]:
写出 WHILE A<C AND B<D DO IF A=1 THEN C:=C+1 ELSE WHILE A<=D DO A:=A+2;的四元式序列。 (100) (j<,A,C,102) (101) (j,-,-,114) (102) (j<,B,D,104)
假设变量的说明是由下列文法生成的: DÆi L LÆ,i L | :T TÆinteger | real
建立一个语法制导定义,把每一个标志符的类型加在符号表中。
答案:
type 为综合属性,代表类型属性, 函数 addtype 实现向符号表中 i 对应项填类型信息。
100 (+,d,e,t1) 101 (*,b,c,t2) 102 (*,t2,t1,t3) 103 (+,a,t3,t4) 104 (:=,t4,-,a) 应该写成: 100 (*,b,c,t1) 101 (+,d,e,t2) 102 (*,t1,t2,t3) 103 (+,a,t3,t4) 104 (:=,t4,-,a)
编译原理课件1
课 程 名 称 : 编译原理
主讲教师: 主讲教师:徐艳群
第一章
教学时数 教学目的与要求 教学重点 教学难点 本章主要阅读文献资料
课 程 名 称 : 编译原理
主讲教师: 主讲教师:徐艳群
教学学时
2 学时
课 程 名 称 : 编译原理
主讲教师: 主讲教师:徐艳群
教学目的与要求
目的与要求
了解编译的过程
课 程 名 称 : 编译原理
主讲教师: 主讲教师:徐艳群
本章主要阅读文献资料
Kenneth C.Louden 著:《Compiler Construction Principle and Pratice 》,机 械工业出版社。 械工业出版社。 蒋立源著: 编译原理》 ),西北工 蒋立源著:《 编译原理》(第2版),西北工 业大学出版社。 业大学出版社。 陈火旺著: 程序设计语言编译程序》 ),国 陈火旺著:《程序设计语言编译程序》(第2 版),国 防工业出版社。 防工业出版社。
课 程 名 称 : 编译原理
主讲教师: 主讲教师:徐艳群
《编译原理》课程基本信息 编译原理》
(一)课程名称 :编译原理 学时, (二)学时学分 :周7学时,4学分 高等数学、C (PASCAL)、离散数学、 汇编语言、 (三)预修课程 :高等数学、C (PASCAL)、离散数学、 汇编语言、 数据结构 后继课程 :形式语言与自动机等 编译原理》 (四)使用教材 :《编译原理》(第2版) 主编:张素琴、吕映芝) (清华大学出版 主编:张素琴、吕映芝)
编译原理及实践教程(黄贤英著)课后答案下载
编译原理及实践教程(黄贤英著)课后答案下载
《编译原理及实践教程》是由出版社出版的一部教育作品。下面是的编译原理及实践教程(黄贤英著),以供大家阅读。
点击此处下载???编译原理及实践教程(黄贤英著)课后答案???
《21世纪高等学校规划教材·计算机科学与技术:编译原理及
实践教程(第2版)》系统地介绍了编译程序的设计与构造以及各组成部分的软件技术和实用方法。全书共8章,主要包括编译程序概述、高级语言设计基础、词法分析、语法分析、语义分析和中间代码生成、运行时存储空间的组织、代码优化以及目标代码生成。《21世纪高
等学校规划教材·计算机科学与技术:编译原理及实践教程(第2版)》的目标是使学习者建立一个较为完整的编译系统的模型,掌握各个阶段的基本算法、常用的编译技术和方法,为今后从事系统软件和应用软件的开发打下理论和实践基础。为此,《21世纪高等学校规划教材·计算机科学与技术:编译原理及实践教程(第2版)》力求讲清基本概念、基本原理和实现方法;书中引入了丰富的典型例题,配以大量的习题;《21世纪高等学校规划教材·计算机科学与技术:编译原
理及实践教程(第2版)》以Sample语言为例来贯穿各章内容,介绍了其编译程序的具体实现技术和构造方法。
《21世纪高等学校规划教材·计算机科学与技术:编译原理及
实践教程(第2版)》可供高等学校计算机科学与技术及相关专业本科教学使用,也可供计算机系统软件和应用软件开发人员自学和参考。
以上是与大家分享的编译原理及实践教程(黄贤英著),希望能给大家带来帮助!
1.超大规模集成电路与系统导论(周润德著)课后答案下载
《编译原理课程教案》第1章编译原理概述精品PPT课件
2020/10/9
《编译原理实践及应用》
第2页
序言
2020/10/9
《编译原理实践及应用》
第3页
什么是编译?
从程序员可以理解的高级语言程序 到机器可以理解的机器语言程序 的自动翻译过程。
C语言程序
void main( ) { int x,y,z;
x=3; y=2; z=x+y; }
2020/10/9
第12页
• 问题:
• 1. 什么是编译程序? • 2. 编译程序的工作过程是什么样的? • 3. 编译程序的总体结构是什么样的? • 4. 什么叫编译前端、编译后端? • 5. 什么叫“遍”(pass)? • 6. 编译程序有哪些生成方法?
2020/10/9
《编译原理实践及应用》
第13页
1.1 编译程序是什么
2020/10/9
《编译原理实践及应用》
第10页
第一章
引论
《编译原理实践及应用》
本章要求
• 主要内容:各种翻译程序的概念,编译 过程和阶段划分,编译程序的组成和结 构,编译程序的构造方法
• 重点掌握:编译程序工作的基本过程及 其各阶段的基本任务,编译程序总框。
2020/10/9
《编译原理实践及应用》
– 连接系统函数与系统资源 • 装入程序(loader)
编译原理实验课件
2011-2-23 编译原理实验课件 3
实验项目设置表
项目 序号 1 实验项目名称 查填符号表 内容提要 实验 学时 每套 人数 1 实验 属性 设计
读出源程序中的标识符,并在符号 2 表中进行查找,若存在则输出该标 识符及其编号和位置;否则将其填 入符号表,并分配编号,确定位置, 输出标识符表。 从键盘上(或文件中)输入简单变 2 量说明(包括整型、实型、布尔型 和字符型),对其处理形成属性字 (属性字包括名字、类型和地址), 输出属性字表,其格式中包括名字、 类型和分配地址等。 实现逆波兰式的生成算式,将简单 算术表达式生成逆波兰表达式。 从键盘输入表达式,判断表达式的 合法性,并给出相应的信息或计算 结果。 实现LR(k)算法,能根据预先定 义的文法规生成LR(k)分析表, 并对输入串进行语法分析。 2 4
2
简单词法分析
1
设计
3 4
逆波兰式生成 表达式分析
1 1
设计 设计
5
ຫໍສະໝຸດ Baidu
综合实验编程
8
1
综合
2011-2-23
编译原理实验课件
4
实验一 查填符号表 实验目的 运用所学知识,选择语言、选择算法(数据结 构),编程实现符号表管理程序,读出源程序中的标识符,并 在符号表中进行查找,若存在则输出该标识符及其编号和位置; 否则将其填入符号表,并分配编号,确定位置,输出标识符表。 实验的基本原理 基于一种搜索算法,建立表示符表;利用界符进行单词解 析;运用文法(自动机)进行标识符识别。 实验内容及要求 运用所学知识,编程实现符号表管理程序,读出源程序中 的标识符,并在符号表中进行查找,若存在则输出该标识符及 其编号和位置;否则将其填入符号表,并分配编号,确定位置, 输出标识符表。
编译原理
结果:内码用二元式(种别码,
属性值)表示
(保留字 int) (标识符 x) (界限符 ,) (标识符 a) (界限符 ,) (标识符 b) (界限符 ; ) (标识符 x ) (运算符 = ) ( 标识符 a ) ( 运算符 + ) ( 标识符 b ) ( 运算符 * ) ( 整常数 50 ) ( 界限符 ;)
表达式中,类型不匹配。 过程调用中,实参和形参的配合。
依据:语义规则。
计算机学院
编译原理
赋值语句a=b+c*10经语义分析生成语法树(考
虑类型问题:a,b,c为实型)
= id1
id2
+ *
id3
inttoreal 10
计算机学院
编译原理
编译过程概述(4):中间代码生成
根据语义规则产生一种介于源语言与目标代码之间的 一种中间代码。
输入文件 遍
输出文件
分遍原则∶
①目标质量高低(高则多遍)②机器内存大小(小则多遍)③ 源语言简繁(繁则多遍)④设计人员多少(多则多遍)
计算机学院
编译原理
把前端组织成一遍扫描
源程序
错误的诊查处理
词法 送单词 语法
语法构造
语义分析和
分析 取单词 分析 返回 中间代码生成
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
page 1
– The program that does the translation is known as a compiler. 9 Compilers THSS 34100162 2010 / 4301 Simply stated, a compiler is a program that reads a program written i n one language — the source language — and translate it into an equivale nt program in another language — the target language. As an important par t of this translation process, the compiler reports to its user the presen ce of errors in the source program. 10 Preprocessors THSБайду номын сангаас 34100162 2010 / 4301 Preprocessors produce input to compilers. They may perform the follow ing functions. Macro inclusion. File inclusion. “Rational” preprocessors . Language extensions. 11 Assemblers THSS 34100162 2010 / 4301 Some compilers produce assembly code that is passed to an assembler f or further processing. Other compilers perform the job of the assembler, p roducing relocatable machine code that can be passed directly to the loade r/link-editor. The relationship between assembly and machine code – Assembly code is mnemonic version of machine code, – names are us ed instead of binary codes for operations – names are also given to memor y address. 12 Loaders and Link-Editors THSS 34100162 2010 / 4301 Usually, a program called a loader performs the two functions of load ing and link-editing. The linker resolves external memory addresses, where the code in one file may refer to a location in another file. The loader then puts together all of the executable object files into memory for exec ution. 13 1.2 Why is PoC? THSS 34100162 2010 / 4301 Why Learn it ? – Computer Science OS (shell) DBS (sql) WEB (wsdl, roap) – Career Programmer (javac, gcj) Scientist (wm) Why research it? – Live 1956 ̄ POPL(1973 ̄) – Impact PLDI 14 Why Study Compilers THSS 34100162 2010 / 4301 Excellent software-engineering example – theory meets practice. Essential software tool Influences hardware design
page 2
– RISC – VLIW Tools (mostly “optimization”) for enhancing software reliability an d security – memory leak 15 1.3 General Course Information THSS 34100162 2010 / 4301 Instructor: Office: Phone: Email: TA: Office: Phone: Email: 王朝坤 FIT-1-105 (Info. Sci. & Tech. Bldg.) (010) 6279-5393 chaokun@t singhua.edu.cn 白易元 FIT-1-106 (Info. Sci. & Tech. Bldg.) 136-9926-9303 e ldereal@gmail.com Course web page: http://learn.tsinghua.edu.cn/ 16 Textbooks THSS 34100162 2010 / 4301 Compilers: Principles, Techniques and Tools (2ed) Alfred V. Aho, Moni ca S. Lam, Ravi Sethi, Jeffrey D. Ullman Addison-Wesley, 2006 (77, 86) ISB N 0-32148-6811 Advanced Compiler Design and Implementation Steven Muchnick Morgan Kaufman Publishers, 1997 ISBN 1-55860-320-4 17 Ref. THSS 34100162 2010 / 4301 The Definitive ANTLR Reference. Terence Parr. The Pragmatic Programme rs, 2007 ISBN-10: 0-9787392-5-6 Lex and Yacc (2nd edition) John R Levine T ony Mason Doug Brown O'Reilly & Associates, October 1992 ISBN: 1-56592-000 7 …… 18 Course Requirements THSS 34100162 2010 / 4301 Checking attendance Homework (20%). – Testing – Exercises – 14 times Programming project (30%). – read/improve the source code of a popular JAVA compiler and will i nvolve lexical analysis parsing semantic analysis code generation – teams Final exam (50%). – closed-book and closed-notes 19 1.4 Programming Languages THSS 34100162 2010 / 4301 declarative programming languages – Fortran, C objective-oriented programming languages – SmallTalk, C++, Java functional programming languages – Lisp, Scheme logical programming languages – Prolog other languages – SQL, Ruby 20