KhanChan18 / compiler2017

A compiler for the course Compiler 2017 at ACM Class, SJTU.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Malic for compiler 2017

A compiler for the course Compiler 2017 at ACM Class, SJTU.

The source is a java-like language. The target is x86-64 NASM.

With various optimizations, this compiler was ranked first in the performance competition of the course.

Optimization

  • Instruction selection
  • Function inlining
  • Control flow analysis
    • redundant jump elimination
  • Dataflow analysis
    • common sub-expression elimination
    • constant propagation and folding
    • dead code elimination
  • Register Allocation
    • a full implementation of George, Lal; Appel, Andrew W. (May 1996). "Iterated Register Coalescing“

for more details, please refer to my report

Build

bash build.bash

Usage

Usage: java -jar Malic.jar [options]
Options:
  -in   <file> : M* language source code
  -out  <file> : x86-64 NASM output
  -help        : print this help page

About

A compiler for the course Compiler 2017 at ACM Class, SJTU.


Languages

Language:Java 96.5%Language:Assembly 1.5%Language:ANTLR 0.9%Language:C 0.7%Language:Shell 0.4%