Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Organization: TODO

Split out the implementation plan into its own document for ease of
finding.  Turns out I had already been fairly verbose there, so little
addition was required.
  • Loading branch information...
commit 8e34f71057d1f3799b94b203040fd2ff87a5e7d1 1 parent a34eb92
Brian Gernhardt Benabik authored

Showing 1 changed file with 38 additions and 0 deletions. Show diff stats Hide diff stats

  1. +38 0 TODO.md
38 TODO.md
Source Rendered
... ... @@ -0,0 +1,38 @@
  1 +# PACT TODO List
  2 +
  3 +## Short Term
  4 +
  5 +* Clean up brainstorming into real design docs
  6 +* But don't get caught up designing things we aren't implementing
  7 +* Build framework: Makefile, test harness, etc
  8 +* Sketch (design and/or code) out lowest level compiler
  9 +
  10 +## Long Term
  11 +
  12 +One of the main motivations of PACT is generating bytecode. Instead of
  13 +starting at the top and trying to ensure we keep everything we'll need
  14 +around, starting from the bytecode and working our way up seems far more
  15 +useful. The implementation plan looks a little like this:
  16 +
  17 +* Build a set of classes that mirror packfile layout.
  18 + * Populated with PACT classes like Sub, Op, etc instead of
  19 + PackfileConstantTable
  20 +* Make that able to produce bytecode and PIR
  21 + * Register allocation
  22 + * Stage structure
  23 +* Build assembly language on top of that
  24 + * assembler and disassembler
  25 +* Build control-flow graph IR
  26 +* Build tree-like POST (optional, POST may only be CFG level)
  27 +* Build PAST
  28 +* Build simple language that exposes PAST very directly (or convert existing)
  29 +
  30 +Share as much across layers as possible. (We want only one
  31 +implementation/type for things like registers, variables, symbol
  32 +tables, location information, etc.)
  33 +
  34 +Maintain as much type information as possible. If we start off with an
  35 +integer constant, remember that all the way down to the bytecode.
  36 +
  37 +After that, start building top-down. Add features to PAST and see if any
  38 +additional POST/CFG/bytecode features are needed to support it.

0 comments on commit 8e34f71

Please sign in to comment.
Something went wrong with that request. Please try again.