Fw: [心得] 编译器设计概论 - 徐慰中

楼主: suhorng ( )   2013-08-25 23:22:25
※ [本文转录自 suhorng 信箱]
作者: yukuro (魔法师mystery) 看板: NCTU-Teacher
标题: [心得] 编译器设计概论 - 徐慰中
时间: 2012/07/03 Tue 19:06:30
(按Ctrl+v 预览,稍微修一下版面,可让你这篇文章更专业喔^^)
⊕课名⊕
编译器设计概论
▲教授▲
徐慰中
★修课年度★(请加注开课单位 如:大三通识、XX系选修、XX所)
大三资工组必修
£教了什么£(课程大概内容。或是额外学会了什么东西。)
课本是用 Crafting a Compiler
参考书是 Compilers: Principles, Techniques, and Tools(俗称Dragon Book)
内容的话:
1. Introduction to Compiler
2. Simple Compiler Design
以上两个就是简介compiler是什么,要做那些事,大致上可以分为6个阶段:
(i) Lexical Analysis: 辨识那些token是属于语言语言
(用Scanner辨识Identifier,某些符号...是否合法)
(ii) Syntax Analysis: 辨识token间怎样排是合法的
(用Parser辨识文法)
(iii)Semantic Analysis: 判断一些属于程式语言的规则,但又没办法在(ii)处理的
是否合法(Ex: Type checking, Declaration...)
(iv) Intermediate Code Generation: 就像Java产生Byte code这种例子
(v) Optimization: 着重在产生出来的code,是否可以把它做的更有效率
(vi) Code Generation: 产生target code
3. Scanner的理论,Lex/Flex的规则和使用
4. Parser的理论, Yacc/Bison的使用
5. Top-Down Parsing(主要是LL(1) parsing) 以及限制
6. Bottom-Up Parsing(主要是LR(0), LR(1), SLR(1), LALR(1))
7. Declaration Processing, Type Checking, Name Space, Symbol Table
8. Reachable Analysis, Termination Analysis, Exception Handling
(这部分是Java有的特色, 上课也是稍微提一下)
9. Generate Codes by Mips Assembly Language
(i) Local Variable, Global Variable
(ii) Assignment Statement
(iii) if, if-else, while, for statement
(iv) function call
(v) Caller-saved, Callee-saved registers
10. Run-Time Support: Activation Record, Stack Allocation,
Compute Array Index, Deal with Non-local Variables by
static link, dynamic link, and display...
11. Simple Register Scheduling and Management
12. Leaf Routine Optimaztion, Jump Code Generation,
Switch Statement Code Generation
课本请参考
Chapter 1-6, 7.1, 7.2, Chapter8(除了8.7), 9.1, Chapter 12
至于Chapter 13,14可以看一下
◆上课方式◆(投影片、团体讨论、老师教学风格)
主要是以老师自己做的投影片教学, 上课时很喜欢和学生互动和问问题
也很关心学生到底有没有听懂上课的内容, 也会藉著问问题的时候记住学生
这学期有两次团体竞赛抢答,主要是为了看学生了解多少,抢答答对会有额外加分
▼考试作业▼
1. 有6次project(50%)
project1: 做一个简单的算数运算compiler,主要是改Java的code,来完成作业
,目的是了解compiler的6个phases
project2-6: 是实作C
作者: q82419 (q82419)   2013-08-26 00:55:00
囧... 接受挑战!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com