CSE P 501 16wi Compiler Project
Project Description and Assignments
- MiniJava information
- Starter code - including files that build a scanner and parser for a tiny example language to demonstrate how the tool chain works.
- Scanner, due Mon. Jan. 25 at 11:00 pm.
- Parser & abstract syntax, due Mon. Feb. 1 at 11 pm.
- Static semantics, type checking, and symbol tables, due Mon. Feb. 22 at 11 pm.
- Code generation, due Sun. March 13 at 11 pm.
- Project report, due Mon. March 14 at 11 pm in the course assignment dropbox.
Resources
- MiniJava project web page; MiniJava grammar (resources from Appel's compiler book)
- CSE GitLab
- Short gitlab tutorial for CSE P 501
- 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). We suggest using v11b of CUP since that allows Java generic types in semantic actions. JFlex and this version of CUP are included in the starter code.
- 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)
- AMD64
- AMD64 System V Application Binary Interface (used by Linux, OS X)
- Gentle Introduction to x86-64 Assembly
- 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 adminanchor