Compiler 2014
News
- (May 25) 5月25日LOG,测试分数统计请看shared_table。
- (May 21) 5月21日LOG,测试分数统计请看shared_table。
- (May 19) 5月19日LOG,测试分数统计请看shared_table。
- (May 7)Final testing deadline is set on May 25.
- (April 25) Testcases are modified.
- (April 18) Compiler 2014: What to do in the day after tomorrow
- (April 18) 4月19日测试结果
- (April 9) More testcases are uploaded. (Task and document resp. of next phase are released. If you have more time, try it.)
- (April 4) The helper bonus is raised to 3(max) per person.
- (April 1) Test environment specification and appetizer updated.
- (Mar 25) You can download new testcases in the
acmcompiler
account in BitBucket. :) (Do not waste too much time on the bonus testcases if you have no idea about how to deal with them. They are just toy programs with special ideas.) - (Mar 24) Update testcases for the first code review.
- (Mar 8) Introduction, grammar and an appetizer are uploaded.
- (Mar 6) Hello, world!
Target Language Definition
Compiler 2014: Introduction by example
Compiler 2014: An appetizer IMPORTANT
Compiler 2014: Standard libraries
Compiler 2014: Semantic specification
Compiler 2014: Testing environment specification (For finalterm examination)
Students who are going to use a language other than Java MUST apply explicitly. Whatever language you use, only the following tools are allowed: lex, yacc, Quex, flex, Bison, re2c, lemon, JFlex, CUP, ANTLR (v3 or v4), Ragel, Gson.
Mail List Summary
Compiler 2014: Mail List Summary Phase 1
Compiler 2014: Mail List Summary Phase 2
Compiler 2014: Mail List Summary Phase 3
Google Group
- 学生群:tiger-acm-sjtu@googlegroups.com
- 助教群:tiger-round-table@googlegroups.com
- 学生群会被用来助教和同学之间的交流。任何问题请往这个群问,除非敏感话题我们不提倡与助教私信。请大家(特别是你在进行讨论或者回答问题的时候)在邮件中附上你的姓名,在群里的活跃程度最后会被考虑到得分中。
- 没进群的同学请直接联系cloudygooseg@gmail.com,我手动把你加进去,因为翻墙的关系我用google group有时不稳定。
Schedule
* 周五晚6点半到8点半,教室为电院3-404
Date | Lecture | Project | Deadline |
---|---|---|---|
2014.3.21 | Introduction&Overview&SA(解东), FlexCup起步(贺天行), Antlr起步(金天行) | Syntactic analysis | 2014.4.4 |
2014.3.28 | Phase1 Code Review data 1,Code Review data 2 | Syntactic analysis | 2014.4.4 |
2014.4.4 | Phase2 Semantic Check(吴航) | Semantic analysis | 2014.4.18(Midterm Examination) |
2014.4.18 | Phase3 Intermediate Representation(金天行) | Translating to intermediate code | 2014.5.9 |
2014.4.25 | Phase4 Register Allocation(贺天行) | Register allocation | 2014.5.9 |
2014.5.9 | Phase4 Optimization(解东)& Phase4 Code review | Final optimization | 2014.5.9 |
2014.5.18 | Final Testing deadline | 2014.5.19-2014.5.25 |
Grading
We publish all of the test-cases:
- git clone https://acmcompiler@bitbucket.org/acmcompiler/compiler2014-testcases.git
- For now, only tutors are able push to this repo, any complaining or adivces please send to the google group.
Grading Dashboard:
- shared_table
- The tutors can edit it, and you can view it.
- If you cannot visit docs.google.com, please see the advise below.
Base:
- Data Correctness(60)
- Performance(20)(你的指令数会与一个门限做比较)
- Code review(5)
- Attendance(5)(接受有正当理由的提前请假,不然会扣分)
Bonus:
- Report(7)
- Maillist Summary(2 per phase)
- Helper(3)(给在群里活跃讨论的同学,个数不限,按活跃程度给分,注意提问和回答都算是贡献)
- Book reader(0.5 per question)(助教会上上课随机提出一个有关龙书理论的问题由同学抢答)
- Fastest(1,0.5,0.5)(给在指定数据中表现抢眼的同学)
关于报告:
- 首先页数至少得是1页半A4,字号最大小四,中英文随意,格式随意,你用latex或者word都行,最后给我们pdf。只要你写够页数了那么苦劳分2分就会给你。
- 然后的评分就看评你的助教欣不欣赏你的工作了,每篇文章都会由两个助教看,如果分差不大取max。
- 注意,哪怕你没做什么牛B功能和优化,你只要总结的够清楚(比如一个不懂编译器的人看了你的报告后就会写了),也能获得高分。
- 而对于做了一些额外功能和优化的同学,应该着重写你们这方面的成果。
- 评测的deadline是25号,报告是6月1号,把pdf放在你的repo根目录下就行,tag还是finalterm。
Possible innovation for your project (Please report if you do these and you will get bonus):
- Use C language to implement the compiler. (You will achieve a full score by doing this, but you also need to do the register allocation.)
- Implement
typedef
- Implement higher order functions. (lambda expression, etc.)
- Static analyzer (abstract interpreter)
- Garbage collection (If you pass our testcases, you can get this bonus.)
- Optimization (loop-unrolling, constants propagation, inline functions, dead code elimination, etc.)
- Concurrency and scheduling
- Reconstruct the AST
- Design pattern you used in your code
- Implement the dynamic array
- Implement free()
- ...
Please notice you can write anything you did and you find interesting in your report,just do your best to surprise the tutors!
Submission Guideline and Version Control
- You are required to use BitBucket.
- Cheat is forbidden.
- You can use the latest
GoAgent
to visit BitBucket. If this does not work, try this:- Modify
local/proxy.ini
: changeprofile = google_cn
intoprofile = google_hk
in[gae]
.
- Modify
Preparation
- Create a Bitbucket account and a private git repository
compiler2014
- Add username
acmcompiler
to your repository withread
permission
Refer to Bitbucket 101 on how to install git and how to create accounts and repos, etc.
Warning: You must create a private repository so others cannot access your code. If you share code with others, you will get a score of zero for this course.
It is recommended to create the .gitignore
file with the following content.
bin/ *.class
Resources
Please inform us if you find a file unaccessible.
Books
- Essentials
- Parsing with C
- Parsing with ANTLR
- Functional compilation
- Theory
Papers
Useful links about the MIPS Assembly Language
- MIPS-SPIM document (pdf, 356KB) and its summary (pdf, 43KB)
- SPIM MIPS Simulator, SPIM reference, and SPIM with statistics
- MIPS Calling Convention
Other Useful links
- Abstract vs. Concrete Syntax Trees
- Understanding C namespaces
- Linux assemblers: A comparison of GAS and NASM
- IA-32 Assembly for Compiler Writers
- AST and IR generation 1 2 3
- Regular expression for a string literal in flex/lex
- Understanding the Stack
- Lambda expressions in Java 8
- Eclipse IDE for Java Developers
- Compiler 2012
Tutors
Name | cell-phone | |
---|---|---|
贺天行 | cloudygooseg@gmail.com | 18721535886 |
解东 | xiedong1993@gmail.com | |
吴航 | wuzhongminghang@gmail.com | |
金天行 | 121665841@qq.com |