In my compiler class, my team created a fully-functional compiler that could translate a subset of the Decaf programming language into Assembly, using standard compiler methods and optimizations.
The compiler requires many different steps to be completed.
I learned the different steps of how compilers work, including parsing, semantic analysis, and code generation.
We made progress on each step of the compiler's development, testing each step to ensure it was working as intended. This led us to create a fully-functional compiler.
Our compiler needs to be fast and efficient.
We learned the implementation for several optimizations and implemented several dataflow optimizations as well as register allocation.
Our compiler became almost twice as fast.