From c84473224b58619cdd72654698ab9c1fc5443bc4 Mon Sep 17 00:00:00 2001 From: Chris Pressey Date: Wed, 13 Dec 2017 16:23:28 +0000 Subject: [PATCH] Some TODO notes. --- README.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 863cdb3..77db653 100644 --- a/README.md +++ b/README.md @@ -65,18 +65,28 @@ But if you add a value ≥ N to it, it becomes invalid. This should be tracked in the abstract interpretation. (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` * 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. * `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 * `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 -* 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. * check and disallow recursion. * automatic tail-call optimization (could be tricky, w/constraints?)