[Openmcl-devel] A little more LAP stuff...

Jon S. Anthony j-anthony at comcast.net
Tue Feb 16 11:18:00 PST 2010


Hi,

Up front - thanks for all the great info already offered on previous
questions.

Looking over some LAP functions and disassembling some user level lisp
functions, my question(s) is what (or whether) there is any difference
between the two approaches used in these for the X86 register toggle
tagging between immediate/node indications.

In user level lisp, this typically seems to use btrl to reset bit
indicating immediate and btsl to set bit indicating node.  For example:


  [13]    (btrl ($ 1) (@ (% fs) 8)) ; indicate immo is immediate
  [23]    (movl (@ -2 (% arg_z)) (% imm0)) ; load it up...
...
  [46]    (btsl ($ 1) (@ (% fs) 8)) ; indicate immo is node


This same thing in LAP functions where (mark-as-imm ...) and
(mark-as-node ...) are used is:

          ;; (mark-as-imm immo)
  [30]    (andb ($ 254) (@ (% fs) 8)) ; indicate immo is immediate
...
          ;; (mark-as-node imm0)
  [84]    (xorl (% imm0) (% imm0)) ; always there, but unclear about it
  [86]    (orb ($ 1) (@ (% fs) 8)) ; indicate immo is node

Is there any real difference between these for the intended task?


/Jon








More information about the Openmcl-devel mailing list