Skip to content

Latest commit

 

History

History
36 lines (24 loc) · 1.62 KB

README.md

File metadata and controls

36 lines (24 loc) · 1.62 KB

RusTiny

This is an educational compiler for a Rust-like language that was originally planned to target the fictional Tiny architecture. But due to Tiny's limitations, RusTiny now targets x86-64 machines. The syntax is based on Rust, but there are numerous semantic differences:

  • The only datatype is int. There also are bool and char, but these are actually ints in disguise.
  • No structs/classes, no modules, only functions. This keeps the whole language managable for me.
  • No mut, no borrow checker. Again: keep it simple.

NOTE: This project is currently on hold as the current approach for SSA register allocation doesn't really pan out. I hope I'll find time to revisit project this sometime in the future.

Goal

My goal is to get the compiler so far that I can write a program that approximates Pi.

Architecture

The general data flow looks something like this:

Source File -(front)-> AST -(middle)-> IR -(back)-> Assembler
  • front: Translates the source file into an Abstract Syntax Tree representation
  • middle: Checks the AST for correctness, transforms it to an Intermediate Representation and performs optimizations
  • back: Translates the IR to Tiny Assembly code x86-64 assembly

Helpful Resources

Resources I found helpful: