CMU CS 17-670 Fall 2022

proj1 | proj2 | proj3 | proj4a | proj4b

Project 4B: Wee-O-Wasm JIT Compiler

In this project, you will extend your Wee-O-Wasm engine to implement a dynamic compiler (i.e. JIT compiler). The objective of this project is to make your engine fast!

You may choose any design for your JIT compiler as long as the JIT compiler is capable of running all test programs (i.e. no fallback to interpreter) without crashing. It is not required to (simultaneously) implement a garbage collector (4A).

You may choose any JIT compiler design for your project, but keep in mind that time is limited and more complex designs are more risky. For simplicity and easier debugging, we recommend a single-pass compiler design.

Your JIT must generate assembly directly, i.e. no reusing LLVM or another JIT compiler.

Your project will be evaluated for functional correctness and performance.

Your project is required to run on Linux x86-64. You will be given a functional x86-64 assembler that you can call from within your C code.