Home

Awesome

gogo

Build Status

Go to MIPS compiler, written in Go.

<p align="center"> <img alt="Logo" src="gopher.svg"> </p>

Gopher vector imported from egonelbre/gophers .


Components

ComponentDemo
Token generation / Lexertest1.out
Parserstruct.go :arrow_right: struct.html
IR generationscope.go :arrow_right: scope.ir
Code generationpascalTriangle.ir :arrow_right: pascalTriangle.asm

Setting up

Run ./scripts/setup.sh from the root directory of the project to set up the pre-commit git hooks.

Dependencies

Build

The following should generate relevant binaries inside the directory bin -

make

The generated binary bin/gogo can be used as follows -

Usage: gogo (-r | -r2s | -s) <filename>
  -p	Generates rightmost derivations used in bottom-up parsing
  -r	Generates IR instructions from go program
  -r2s  Generates the MIPS assembly from IR
  -s	Generates MIPS assembly from go program

NOTE: The generated MIPS assembly has been tested to work on SPIM MIPS32 simulator.

Testing

The tests can be built via -

make test