A compiler for the course Compiler 2017 at ACM Class, SJTU.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
lib
src/com/mercy/compiler
test/com/mercy/compiler
testcase
.gitignore
asm.bash
build.bash
c2nasm.bash
codegen.bash
optim.bash
readme.md
semantic.bash

readme.md

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