X-Git-Url: http://git.subgeniuskitty.com/vvhitespace/.git/blobdiff_plain/d63de3fa849451796c2381723d042f254d434670..ae1f85a178241c826a0b6a72ace12049b9907561:/stdlib/README.md diff --git a/stdlib/README.md b/stdlib/README.md index 348cc76..c64be4b 100644 --- a/stdlib/README.md +++ b/stdlib/README.md @@ -16,9 +16,12 @@ following reservations: 0xxxxxxx xxxxxxxx - reserved for private use by stdlib 1xxxxxxx xxxxxxxx - available for use in user programs -## Heap ## +## Heap and Pointers ## - The first 256 heap addresses are reserved when using the stdlib. +The first 16 heap addresses (`0-15`) are reserved when using the stdlib. + +By convention, functions which return a pointer will use the address `0` to +represent a `NULL` pointer. # Entry Points # @@ -37,14 +40,23 @@ header comment for each function to learn the call and return stack. 11000 ----- memset (heap.pvvs) 11001 ----- memcpy (heap.pvvs) 11010 ----- memrand (heap.pvvs) - 100xxx - unassigned + 11011 ----- memcmp (heap.pvvs) + 11100 ----- memsrch (heap.pvvs) + 11101 ----- + 11110 ----- slurp (heap.pvvs) + 11111 ----- spew (heap.pvvs) + 100xxx - string functions + 100000 ----- strlen (string.pvvs) 101xxx - unassigned 110xxx - conversion functions 111xxx - debug functions 111000 ----- dump heap (debug.pvvs) + 111001 ----- dump stack (debug.pvvs) 1xxxxxx - reserved for less common entry points - 1000000 ----- print sign of number (stdio.pvvs) - 1000001 ----- print magnitude of number (stdio.pvvs) + 1000000 ----- slurp registers (heap.pvvs) + 1000001 ----- spew registers (heap.pvvs) + 1000010 ----- print sign of number (stdio.pvvs) + 1000011 ----- print magnitude of number (stdio.pvvs) # Misc # @@ -54,3 +66,13 @@ private label space associated with it, formed as follows: 00001000 xxxxxxxx - for use by 1000 00001001 xxxxxxxx - for use by 1001 ...etc + +# Slurp and Spew # + +The stdlib uses heap[1] to heap[15] as registers. + +The `slurpreg` and `spewreg` functions facilitate this by `spew`ing the stack +onto the heap's pseudo-registers or `slurp`ing the pseudo-registers back to the +stack. The functions preserve order in complementary fashion. + +The `spewreg` function uses `heap[0]` for storage.