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