diff --git a/Roadmap.md b/Roadmap.md index 0495c83..e5be19d 100644 --- a/Roadmap.md +++ b/Roadmap.md @@ -3,9 +3,6 @@ This is where I keep track of what to do next ... ## Near-Term -- Easy speedups: - - Immediate mode branch `BRCI`, jump `JMPI`, call `JSRI` and load/store instructions. Will cut VM cycle count by 25%-50% by eliminating `LDI`/`BRC`, `LDI`/`JMP`, `LDI/JSR` and `LDI`/`LDxx` `LDI`/`STxx` combinations. - - Add support to VM, Disassembler and finally to the compiler. - Compile direct from disk. Would be nice to be able to compile Tetris on Apple II (rather than compile on Linux and run under Apple II EightBall VM.) - A way to pass string literals as subroutine arguments - Try to squeeze the interpreter / compiler code down a bit to save memory. @@ -25,22 +22,7 @@ This is where I keep track of what to do next ... - Need to think about how a module system should work - Which is more useful: dynamic loading of modules at runtime, or static linking? - Optimize virtual machine bytecodes, based on study of real code - - Compiler often writes variable, and immediately needs it again. This can be optimized easily by adding some "store and preserve" VM instructions. - -Today: -``` -LDI address -STAW -LDI address -LDAW -``` -Future: -``` -LDI address -STAWP # Store and preserve on Eval Stack -``` -Similarly, repeated loads could be optimized into a single load and some `DUP`s. - + - Compiler often writes variable, and immediately needs it again. ## Long-Term - High performance VM - Hand-coded in 6502 assembly