Assignments

Programming Assignments

Starter Code

Extra Credit Opportunities

x86 Resources

x86 Developer Manual

x86 Instruction Reference

x86 Opcode and Instruction Reference

Alphabetical x86 Opcode and Instruction Reference

Online x86 Assembler/Disassembler

Online ELF Viewer

ELF Wikipedia Page

Submission Instructions

How to submit your compiler to the autograder:

Zip up all of your source files (.java files) and upload them to the autograder. Subfolders are fine, the autograder will search and find all of your .java files. Make sure your folder/filenames do not contain spaces (or any other whitespace) in them.

I know some IDEs let you right-click your src folder, and then export them to a zip file, which should make submitting a little easier.

The autograder is built on openjdk11, please be careful to not use features from an incompatible version of jdk.

How to check correctness

On this page, the input source files are available as “Gradescope Tests” for each programming assignment.

If, for example, the test named “pass145” does not result in a “Success” from your compiler, you can find pass145.java in the tests zip, and see what is going on in that source file.

Similarly, the test named “fail128” should fail syntax analysis, and correspond to fail128.java in the gradescope tests zip file.

Other info

The autograder will pass the full path of the test file in args[0], but your FileInputStream likely won’t care if it is a full or relative path. If you want to test offline, find your bin folder where .class files are, and do java -cp bin miniJava.Compiler /path/to/your/test/file.java

PA1 due 7/2/24 at 11:59pm.

Gradescope Tests

Simple Scanner + Parser Example

Example Test Runner

PA2 due 7/9/24 at 11:59pm.

Gradescope Tests

Simple AST Construction Example

Example Test Runner

PA3 due 7/16/24 at 11:59pm.

Gradescope Tests

PA4 due 7/23/24 at 11:59pm.

Gradescope Tests

Correct Assembly

PA5 due 7/25/24 at 11:59pm.

Written Assignments

WA1 due 6/30/24 at 11:59pm.

Practice Problem Recording

WA2 due 7/7/24 at 11:59pm.

WA3 due 7/14/24 at 11:59pm.

WA4 due 7/25/24 at 11:59pm.