X-Git-Url: http://git.subgeniuskitty.com/vvhitespace/.git/blobdiff_plain/3d75b9284b9e948c94dddbc707a94e2e7acf99f4..bb21580a5abba6a1e6666e9fb363f68d40f785d7:/stdlib/README.md diff --git a/stdlib/README.md b/stdlib/README.md index 91fa714..cef4cd4 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 # @@ -36,6 +39,12 @@ header comment for each function to learn the call and return stack. 011xxx - heap functions 11000 ----- memset (heap.pvvs) 11001 ----- memcpy (heap.pvvs) + 11010 ----- memrand (heap.pvvs) + 11011 ----- memcmp (heap.pvvs) + 11100 ----- memsrch (heap.pvvs) + 11101 ----- + 11110 ----- slurp (heap.pvvs) + 11111 ----- spew (heap.pvvs) 100xxx - unassigned 101xxx - unassigned 110xxx - conversion functions @@ -53,3 +62,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 `slurp` and `spew` 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 `spew` function uses `heap[0]` for storage.