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