1
0
mirror of https://github.com/catseye/SixtyPical.git synced 2025-02-19 20:30:45 +00:00

Some TODO notes.

This commit is contained in:
Chris Pressey 2017-12-13 16:23:28 +00:00
parent b477c5e786
commit c84473224b

View File

@ -65,18 +65,28 @@ But if you add a value ≥ N to it, it becomes invalid.
This should be tracked in the abstract interpretation. This should be tracked in the abstract interpretation.
(If only because abstract interpretation is the major point of this project!) (If only because abstract interpretation is the major point of this project!)
### And at some point... ### Routine-local static memory locations
* Compare word (constant or memory location) with memory location or pointer. (Maybe?) These would not need to appear in the inputs/outputs/trashes sets of the routines
that call this routine.
These might be forced to specify an initial value so that they can always be
assumed to be meaningful.
### More modes for `copy`
* don't allow `copy foo, a` probably. insist on `ld a, foo` for this.
* have `copy` instruction able to copy a byte to a user-def mem loc, etc.
* `copy x, [ptr] + y` * `copy x, [ptr] + y`
* Maybe even `copy [ptra] + y, [ptrb] + y`, which can be compiled to indirect LDA then indirect STA! * Maybe even `copy [ptra] + y, [ptrb] + y`, which can be compiled to indirect LDA then indirect STA!
### And at some point...
* Check that the buffer being read or written to through pointer, appears in approporiate inputs or outputs set. * Check that the buffer being read or written to through pointer, appears in approporiate inputs or outputs set.
* `byte table` and `word table` of sizes other than 256 * `byte table` and `word table` of sizes other than 256
* initialized `byte table` memory locations
* always analyze before executing or compiling, unless told not to * always analyze before executing or compiling, unless told not to
* `interrupt` routines -- to indicate that "the supervisor" has stored values on the stack, so we can trash them. * `interrupt` routines -- to indicate that "the supervisor" has stored values on the stack, so we can trash them.
* error messages that include the line number of the source code * error messages that include the line number of the source code
* have `copy` instruction able to copy a byte to a user-def mem loc, etc.
* add absolute addressing in shl/shr, absolute-indexed for add, sub, etc. * add absolute addressing in shl/shr, absolute-indexed for add, sub, etc.
* check and disallow recursion. * check and disallow recursion.
* automatic tail-call optimization (could be tricky, w/constraints?) * automatic tail-call optimization (could be tricky, w/constraints?)