Minimal compiler targeting both Linux and macOS/Darwin platforms. Implements compilation using an incremental approach1 2 from LVar language to x86_64 assembly (AT&T syntax).
- LVar: Expression-based language with integer literals, arithmetic and let-bindings
- LVarMon: LVar but in Monadic Normal Form3 4
- CVar: Statement-based three-address code intermediate language
- X86Var: X86 intermediate language with variables
- X86Int: Target assembly language
- Expression simplification via partial evaluation
- Stack-based variable allocation
- Instruction selection with peephole optimization
- Proper stack frame management
- Call ABI compliance (Linux, Darwin)
- Implementing Register allocation
BSD-3-Clause