
CSE 401/M501 18au Compiler Project
Project Description and Assignments
- MiniJava information
- Scanner, due Thur. Oct. 11 at 11 pm.
- Parser & abstract syntax, due Thur. Oct. 25 at 11 pm.
- Static semantics, type checking, and symbol tables, due Thur. Nov. 15 at 11 pm.
- Code generation, due
Wed. Nov. 28Thur. Nov. 29 at 11 pm. - Compiler additions, due Thur. Dec. 6 at 11 pm
- Information about project additional requirements for students taking CSE M 501
- Project report, due Sat. Dec. 8 at 11:59 pm. No late reports accepted.
Resources
- MiniJava project web page; MiniJava grammar (resources from Appel's compiler book)
- Local copy of MiniJava grammar.
- CSE GitLab
- Short gitlab tutorial for CSE 401
- git book - detailed info
- CSE Virtual Machines (useful for testing generated code on personal machines)
- JFlex lexical analyzer generator and CUP LALR parser generator (including manuals for JFlex and CUP). Current versions of the JFlex and CUP executable code are included in the starter project. Feel free to download the full distributions if you wish to examine additional files for reference.
- The Java Language Specification from Sun, including a LALR(1) grammar for full Java. Check here if you're not sure how something should work.
- x86-64 resources:
- x86-64 Instructions and ABI (handout for University of Chicago CMSC 22620 by John Reppy)
- x86-64 Machine Level Programming by Bryant and O'Hallaron (CMU; earlier version of Sec. 3.13 of Computer Systems: A Programmer's Perspective, 2nd ed.)
- Bryant/O'Hallaron CSE 351 textbook web site (links to various x86/x86-64 resources)
- gdb summary (direct link)
- One they didn't include:
display/i $rip
will show you the next instruction every time you step or reach a breakpoint.
- One they didn't include:
- SSE floating point
- gdb summary (direct link)
- gdb documentation
- reference card (direct link)
- Intel processor documentation.
- Gnu assembler documentation (x86 and x86-64 details, at&t vs Intel syntax)
Test Programs
There are several MiniJava test programs on the MiniJava project web site that are included in the starter code.. Additional test programs may be provided here later.
Computer Science & Engineering University of Washington Box 352350 Seattle, WA 98195-2350 (206) 543-1695 voice, (206) 543-2969 FAX
Comments to admin