support 'fake' handles allocated statically

Mystery solved of why the syntax sugar phases don't work even though they
don't use any functions whose signatures changed in the migration to handles.

The answer: they use the Registers table, and it currently doesn't use
handles.

Rather than create a whole new set of functions that operate on addresses,
I'm going to create fake handles that are never intended to be reclaimed.
Which raises the question of the best way to do that. I'd like to continue
using string syntax, so I'm going to use a prefix in the payload that can
also be rendered as a string. But all the printable characters start with
0x20, and we don't currently have escape sequences for null or any other
non-printable characters.

I _could_ use newlines, but that seems overly clever. So instead I'll once
again not worry about some hypothetical problem with running out of alloc-ids,
and just carve out half of the id space that can't be used for real alloc
ids. Ascii doesn't use the most significant bit of bytes, so it seems like
a natural separation.
This commit is contained in:
Kartik Agaram 2020-04-10 15:49:08 -07:00
parent 99c3cfddff
commit d56ce7e771
10 changed files with 1 additions and 1 deletions

View File

@ -33,7 +33,7 @@ Heap-size: # int
0x400000/imm32/4MB
Next-alloc-id: # int
1/imm32
0x80000000/imm32
== code
# instruction effective address register displacement immediate

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
apps/hex

Binary file not shown.

BIN
apps/pack

Binary file not shown.

Binary file not shown.

Binary file not shown.