[LispM-Hackers] Re: [Lispm-cvs] CVS update: e3

James A. Crippen james@unlambda.com
03 Jan 2002 21:05:39 -0900


james@kappa.unlambda.com writes:

> Major revisions to the e3AuxOp enum, including filling in all missing
> aux ops from UCODE;DEFOP.LISP (previous list only included ops listed
> in UCODE;DEFOP-LISP-FUNCTION-P.LISP).  This also includes a handful of
> auxops with duplicate names.  In these cases the op apparently
> performs the same function but was known under two different names by
> Lisp.  I have added both names in with the same number and commented
> these occurences.  Also added fake auxops for those auxop numbers that
> are not assigned.  (I didn't fill in the larger chunks because I'm too
> lazy to write the Emacs code to count in octal.)  Please take a moment
> to read the CVS diff from the previous revision and note the new
> auxops and changed names.

I added in the *huge* pile of UNBIND, POP-PDL, and RETURN auxops,
which fall into the category of auxops with count fields.  Instead of
trying to decode the count fields we just list them out as individual
insns, which is what the original authors of UCODE;DEFOP.LISP did.

> Also some minor changes to the e3MacroInstruction class to include
> methods for dumping operands of different classes of instructions.
> Kept old dumpOperands() method since some things still use it and have
> not been changed.  I'll commit the actual code for these in macroop.cc
> later.

I'm still hacking on this at the moment, but my goal is to have auxops
and miscops at least *detected* and noted by the instruction dumper.
Later on I'll deal with decoding them.

Some of these ops will cause some serious ugliness...  The long branch
insns for example take their displacement (branch destination) in the
following halfword which is currently being decoded as just another
insn.  Also the immediates pose an interesting problem because each
immediate insn can use its immediate value in an idiosyncratic way
(although apparently many of these are just small fixnums).

The good thing is that when done we'll have reference code for how
each op decodes its operands.  And that will help when it comes to
implementing them...

'james

-- 
James A. Crippen <james@unlambda.com> ,-./-.  Anchorage, Alaska,
Lambda Unlimited: Recursion 'R' Us   |  |/  | USA, 61.20939N, -149.767W
Y = \f.(\x.f(xx)) (\x.f(xx))         |  |\  | Earth, Sol System,
Y(F) = F(Y(F))                        \_,-_/  Milky Way.