There are real and varied structural limits in how we reference image register. Changing that would be hard.
If we eliminated the requirement that the data be stored in image register, or more specifically, that it be referenceable as image register, we have a great deal of flexibility. The answer to that is tables, which we've mentioned before. I think we are going to do that.
Some thoughts on tables...
1. A table is a 1 to n dimension collection of simple or complex data elements.
2. There may be the ability to have small tables in retentive memory, but generally they will live in non-retentive bulk ram.
3. There will be a normal heap item associated with each table. It will contain stats on the table, and likely some private data with implementation details.
4. I'd expect multiple forms of table: FIFO, LIFO, sorted, multi-dimension array, etc. TBD.
5. There will be multi-scan instructions for adding, inserting, removing, etc records from tables.
6. There will be standalone instructions for reading and writing records, as well as MATH box functions for the same. In general, record read/write access is single scan blocking, while the instructions from #5 are generally multi-scan non-blocking. Unsorted append might be an exception.
7. We are thinking the MATH box grammar might be something like MyTable{dim1exp, dim2exp, ..., dimnexp} and would have both l-value and r-value variants. Using the curly brace would help in the parsing, and make it easy to discern table access from function calls.
8. Because table entries aren't normal image register, comm/status would be provided through a difference mechanism, but we should be able to provide reasonable access.
9. TBD...