All Projects → shivansh → gogo

shivansh / gogo

Licence: MIT license
Go to MIPS compiler, written in Go. Course project for Compiler Design (CS335).

Programming Languages

go
31211 projects - #10 most used programming language
assembly
5116 projects
HTML
75241 projects
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to gogo

asmdot
[Unstable] Fast, zero-copy and lightweight (Arm | Mips | x86) assembler in (C | C++ | C# | Go | Haskell | Javascript | Nim | OCaml | Python | Rust).
Stars: ✭ 23 (-8%)
Mutual labels:  mips
GoRAT
GoRAT (Go Remote Access Tool) is an extremely powerful reverse shell, file server, and control plane using HTTPS reverse tunnels as a transport mechanism.
Stars: ✭ 34 (+36%)
Mutual labels:  mips
trsh
Project about minimizing costs in garbage collection in Montevideo, Uruguay, using Evolutionary Algorithms
Stars: ✭ 17 (-32%)
Mutual labels:  garbage-collection
kpspemu
PSP Emulator written in Kotlin for JVM, JS and Native. Can work as PWA.
Stars: ✭ 57 (+128%)
Mutual labels:  mips
rebuild
Zero-dependency, reproducible build environments
Stars: ✭ 48 (+92%)
Mutual labels:  mips
HIGH-TO-LOW
in this repository you will find codes in C and their equivalence in MIPS Assembly
Stars: ✭ 20 (-20%)
Mutual labels:  mips
pseudo-js
PLAYSTATION emulator in JavaScript
Stars: ✭ 76 (+204%)
Mutual labels:  mips
cleanreg
A small tool to clean up Docker Registries (v2).
Stars: ✭ 48 (+92%)
Mutual labels:  garbage-collection
kamon-system-metrics
Kamon System Metrics
Stars: ✭ 22 (-12%)
Mutual labels:  garbage-collection
H2 ALSH
Accurate and Fast ALSH for Maximum Inner Product Search (KDD 2018)
Stars: ✭ 18 (-28%)
Mutual labels:  mips
on-the-fly-gc
Concurrent mark-sweep garbage collector for accurate garbage collection of language runtimes in C++ 1x.
Stars: ✭ 25 (+0%)
Mutual labels:  garbage-collection
mipsasm
MIPS assembler and IDE
Stars: ✭ 45 (+80%)
Mutual labels:  mips
openwrt-useful-tools
A repo containing different tools compiled specifically for the Hak5 WiFi Pineapple MK6 and MK7.
Stars: ✭ 155 (+520%)
Mutual labels:  mips
cross
“Zero setup” cross compilation and “cross testing” of Rust crates
Stars: ✭ 3,550 (+14100%)
Mutual labels:  mips
l4re-core
The core components of the L4Re operating system.
Stars: ✭ 39 (+56%)
Mutual labels:  mips
lips
MIPS R4300i assembler in Lua
Stars: ✭ 20 (-20%)
Mutual labels:  mips
awesome-n64-development
A curated list of Nintendo 64 development resources including toolchains, documentation, emulators, example code, and more
Stars: ✭ 210 (+740%)
Mutual labels:  mips
python-memory-management-course
Demo code exploring Python's memory models and collection algorithms from the Talk Python Training course.
Stars: ✭ 31 (+24%)
Mutual labels:  garbage-collection
decaf-rs
The Decaf compiler, written in Rust
Stars: ✭ 43 (+72%)
Mutual labels:  mips
BUAA CO
2017级北航计算机学院计算机组成原理课程设计(MIPS CPU)
Stars: ✭ 66 (+164%)
Mutual labels:  mips

gogo

Build Status

Go to MIPS compiler, written in Go.

Logo

Gopher vector imported from egonelbre/gophers .


Components

Component Demo
Token generation / Lexer test1.out
Parser struct.go ➡️ struct.html
IR generation scope.go ➡️ scope.ir
Code generation pascalTriangle.ir ➡️ 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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].