Compiler 2017
外观
Overview
- Source Language: Mx*
- Target Language: x86-64 Assembly in NASM format
- Compiler Language: Java (recommended), or any others, e.g. C, C++, Haskell, ...
- All lexer and parser generators are allowed, e.g. Antlr 4 (recommended), flex + bison, ...
- You need to write all other components by yourselves, including semantic analysis, code generation and optimization.
- Online Judge: https://acm.sjtu.edu.cn/compiler2017/
- Please fill in your bitbucket repo url at https://docs.google.com/spreadsheets/d/1k5wGZyaOa82uMU5j1ddXBBukxxZLALGcQgGnoa65tH0/edit?usp=sharing
- Any questions & discussions please go to Google Groups
Grading
- Objective Score: 100 pts
- Score Insurance: 85 pts
- Ladder Tournament: 15 pts
- Subjective Score: -5 ~ +5 pts
- Extra Bonus
Score Insurance
- Open testcases made by TAs
- Loose compile & run time limit (TBD)
- Late Policy: 1pt / day
Ladder Tournament
- Every student must contribute at least a testcase
- Compile & run time are limitted to 5 sec.
- total_score(student) = sum(score(student, testcase) for testcase in testcases)
- score(student, testcase) is calcuated by the rank of student's run time on this testcase
How to Get Bonus?
- Helping other students!
Schedule
- (Thursday, March 16, 2017, 16:00 ~ 18:00) x86-64 文件:Compiler2017 x86 64.pdf
- (Saturday, April 1, 2017, 23:59) Deadline: Hand in your testcase for Semantic Test
- (Wednesday, April 5, 2017, 23:59) Deadline: Semantic Test
(Thursday, May 18, 2017, 23:59) Deadline: Hand in your testcase for final Optim Test(Sunday, May 21, 2017, 23:59) Deadline: Brute-force Codegen Test(Sunday, May 28, 2017, 23:59) Deadline: Final Optim Test- (Saturday, May 20, 2017, 23:59) Deadline: Hand in your testcase for final Optim Test
- (Wednesday, May 24, 2017, 23:59) Deadline: Brute-force Codegen Test
- (Monday, May 29, 2017, 23:59) Deadline: Final Optim Test
陈乐群 | 游宇榕 | 徐晓骏 | 徐世超 | 谢天成 | 李慧琛 | 孙星远 |
---|---|---|---|---|---|---|
应思豪 | 卢思迪 | 孔冰玉 | 胥拿云 | 郑怜悯 | 刘思柒 | 徐植天 |
吴怡然 | 黎金宁 | 陈欣昊 | 叶昊然 | 张哲恺 | 曹孟尧 | 许臻佳 |
方智涌 | 徐遥 | 秋闻达 | 冼臧越洋 | 方博慧 | 龙思杉 | 苏雨峰 |
谭博文 | 杨卓林 | 盛佩瑶 | 杨嘉成 |
Resources
Course
- Language Reference (Update: April 1, 2017)
Java
- Core Java: Volume I - Fundamentals (10th Edition): douban, pirated pdf
Parsing
- The Definitive ANTLR 4 Reference: douban, pirated pdf
- Parsing Techniques: A Practical Guide (2nd Edition): douban, pirated pdf
- Compilers - Principles, Techniques, and Tools (2nd Edition): douban, pirated pdf
CodeGen & Optim
- Engineering a Compiler (2nd Edition): douban, pirated pdf
- Static Single Assignment Book: pdf
x86-64 & Assembly & Linux
- NASM Tutorial
- c2nasm.bash
- Linux System Call Table for x86-64
- x86 Assembly
- Stack frame layout on x86-64
- System V AMD64 ABI (x86-64 calling conventions)
- NASM Manual
- x64 Cheat Sheet (in GNU Assembler format)
- x86_64 NASM Assembly Quick Reference
- X86-64 Opcode and Instruction Reference
Books
- ふつうのコンパイラをつくろう: douban, pirated pdf
- Modern Compiler Implementation in Java (2nd Edition): douban, pirated pdf
- Crafting a Compiler (1st Edition): douban, pirated pdf
- Programming Language Pragmatics (3rd Edition): douban, pirated pdf
Some Links
Tutors
Name | |
---|---|
马融 | marong1024 [at] gmail.com |
陈乐群 | i [at] abcdabcd987.com |
游宇榕 | yurongyou [at] sjtu.edu.cn |
徐晓骏 | xuxj [at] apex.sjtu.edu.cn |
徐世超 | 906476903 [at] qq.com |
谢天成 | wjxtcsgx [at] hotmail.com |
李慧琛 | 514568755 [at] qq.com |
孙星远 | xingyuansun.cs [at] gmail.com |