Skip to content

A Rust-like language compiling to x86-64 assembler

License

Notifications You must be signed in to change notification settings

msiemens/RusTiny

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:

About

A Rust-like language compiling to x86-64 assembler

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published