Giter VIP home page Giter VIP logo

fyr's Introduction

Fyr Logo Fyr

Fyr (pronounced the same as 'fire') will be a programming language specifically geared towards building games & software for the Nintendo Game Boy Advance and will have features catering to the same.

This repository will host the Fyr Compiler (Fyrc) which will support fully featured end to end compilation from Fyr source code to GBA (ARM7TDMI) machine code with minimal third-party dependencies.

While the Language Design and the Frontend are still pending, Fyrc already boasts an SSA (Static Single Assignment) based Intermediate Representation with basic SSA passes and SSA-based Register Allocation. A list of implemented and upcoming features can be found in the roadmap below.

Roadmap

Note: The roadmap is not static and is subject to change. Also the sequence of items is tentative and features may not strictly be implemented in the given sequence.

  • Backend: SSA-based Intermediate Representation
  • Backend: Lazy direct AST to SSA translation algorithm
  • Backend: SSA passes
    • Critical Edge Removal
    • DFS Tree
    • Loop Nesting Forest
    • Dominator Tree
    • Liveness Analysis
    • Interference Graph
    • Transformed SSA to Conventional SSA Translation
    • Value Def/Use Points
    • Value Global Next Use
  • Backend: SSA based Register Allocation
    • Register Spilling and Live Range Splitting
    • Register and Spill Slot Assignment
  • Backend: Thumb Machine Code Generation
    • Machine Instruction (Machinst) IR
    • Machine Code Generation
    • Machine Code & Data Layout Generation
  • Frontend: Basic Language Design with Parser
    • Handwritten Parser
    • Basic Type Checking and Inference
    • Lowering to SSA
    • Support for
      • Integers & Integer Pointers
      • Control Flow (Functions, Loops, if/else)
      • Static immutable data
  • Testing and QoL Improvements:
    • End to End compiler tests
    • Fuzzing framework
    • Basic example programs/games
    • Web Playground (WASM)
    • Basic Language docs
    • Basic Compiler Design docs
  • Frontend+Backend: Aggregate types support (structs & arrays)
    • Heap allocated
    • Stack allocated
  • Backend: More SSA passes
    • Scalar Replacement of Aggregates
    • Control Flow optimization passes
      • ...
    • Data Flow optimization passes
      • ...
  • Backend: ARM Machine Code Generation
  • Backend: ARM and Thumb Interop
  • Frontend+Backend: Link Region support for functions and globals (ROM/IWRAM/EWRAM)
  • Frontend+Backend: Support for Static Mutable data.
  • Machine Code optimization framework using E-Graphs & Equality Saturation

fyr's People

Contributors

vspecky avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.