LLL:instruction set
Mike Prince
mprince@crl.com
Sat, 17 Dec 1994 17:33:31 -0800 (PST)
> On Sat, 17 Dec 1994, Dr. J. Van Sckalkwyk (external) wrote:
> > 2. DEFINE OUR LLL
> > a. symbolic registers, including "pointer registers"
Forth like, so we have
DataStack (a typeless stack for data manipulation)
PathStack (how to return from subroutine calls)
Code (points to current METHOD)
> > b. necessary flags
None, stack holds info.
> > c. Suggested primitives:
> > ADD SUB MUL DIV SHR SHL ROL ROR OR XOR AND NOT NEG
> > TEST_UNDER_MASK
> > REQUEST / FREE "memory" block (in broadest sense)
> > POINTER creation
> > GET / PUT
> > PUSH / POP
> > CONDITIONAL_BRANCH (or skip)
> > "CALL" / RETURN
> > FORK / JOIN
Yes to all the above. They are all one byte codes that work on data on
the stack (except for push). Do we need TEST_UNDER_MASK?
Certain operators ADD would have a ADD8, ADD16, ADD32, versions for
multiple types.
> > HOW_LONG
?
> > (relevant graphic_display primitives)
> > (relevant visual_perceptive primitives)
> > (relevant speech primitives)
> > (relevant sound_generation primitives)
> > (relevant hearing_perceptive primitives)
> > (? relevant spatial_descriptive&perceptual primitives)
> > GET_FROM_STREAM / WRITE_TO_STREAM
> > ? DO_CRC
> > ? COMPRESS / DECOMPRESS ??!!
> > ? RANDOM number generation
> > ? SEARCH / SORT
These are all libraries/METHODS. Not part of LLL primitives.
> > ? INSERT into block
> > ? EXCISE from block
These two have a LLL bytecode version. There will probably be HLL
versions as well though.
Mike