ZacharyWesterman / mC_compiler

A minimal-C compiler

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This compiler generates ARM assembly (for the Raspberry Pi, specifically).

Zach Westerman, Ryan Haynes.

Files required to build compiler:

           scanner.l   parser.y
            strtab.c   strtab.h
              tree.c   tree.h
            symtab.c   symtab.h
    func_signature.c   func_signature.h
         semantics.c   semantics.h
    asm_instr_list.c   asm_instr_list.h
      generate_asm.c   generate_asm.h
       optmize_asm.c   optimize_asm.h
            driver.c
            makefile

Dependencies:

flex
yacc
gcc
make

To build, run make.

Flags

-h, --help: Displays help text
-a, --ast: Displays abstract syntax tree
-o, --opt: Optimize generated assembly IR
-s, --sym-tab: Displays the symbol table
-l, --list-asm: Shows generated ARM assembly
-n, --no-output: No output created
-m, --makefile: Generates a MAKEFILE for the output

Optimizations

Immediate rewrite optimization:
  If a value is loaded into a register and then
  immediately overwritten with an unrelated value, 
  the first load is removed from code gen.

About

A minimal-C compiler


Languages

Language:C 75.5%Language:Yacc 12.1%Language:Lex 6.8%Language:Assembly 2.8%Language:Makefile 1.8%Language:C++ 0.9%