mirror of
https://github.com/bobbimanners/EightBall.git
synced 2025-02-19 16:31:31 +00:00
Created Roadmap (markdown)
parent
a07638ebda
commit
353549c766
20
Roadmap.md
Normal file
20
Roadmap.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# Roadmap
|
||||||
|
|
||||||
|
- Finish compiler implementation (parity with interpreter features)
|
||||||
|
- Array pass by reference
|
||||||
|
- Work out how to evaluate expressions with only constants within the compiler so array dimensions no longer need to be literal constants
|
||||||
|
- Wishlist features:
|
||||||
|
- Multidimensional arrays (implemented as array of pointers to array).
|
||||||
|
- Array initializer lists:
|
||||||
|
- `word xyz[3] = {123, 456, 789}`
|
||||||
|
- String initializer:
|
||||||
|
- `byte qq[10] = "abcde"` - will also add null terminator to string
|
||||||
|
- Module system
|
||||||
|
- Would be good to make bytecode relocatable by using relative addresses
|
||||||
|
- Need to add new relative jump / branch instructions for this)
|
||||||
|
- Drawback is it makes the code harder to read for humans, but this can be overcome with better tools
|
||||||
|
- Need to think about how a module system should work
|
||||||
|
- Write a non-trivial app in EightBall to discover the pain points
|
||||||
|
- Optimize virtual machine bytecodes, based on study of real code
|
||||||
|
- For example, it would be good to have an instruction to drop n bytes from call stack rather than repeated `POP`, `DROP` as the compiler currently does.
|
||||||
|
- High performance VM: hand-coded in 6502 assembly
|
Loading…
x
Reference in New Issue
Block a user