nameclasslengthtypeformatauxcnt
’T
const1’ptrnoData’1
’NIL
const1’ptrnoData’2
’0
const1’intnoData’3
’1
const1’intnoData’4
SIC
const3’intSB-
SNIC
const3’intSBneg-
SICX
const3’intDB-
ATOMNBR
const3’atomDB-
PCONSTconst5’ptrQB-
FCONSTconst5’floatQB-
ICONSTconst5’intQB

-constants have been changed to allow a larger word size. To avoid 6 byte
-opcodes, GCONST has been changed to 3 opcodes: PCONST, ICONST, FCONST.
-ATOMNBR is up in air because atom format is unknown.

IVARk
ivar1-noneop37
IVARX
ivar2-noneSB
IVARX←
setivar2-noneSB
PVARk
pvar1-noneop37
PVARX
pvar2-noneSB
PVAR←k
setpvar1-noneop37
PVAR←↑k
setpvarp1-noneop37
PVAR←X
setpvar1-noneSB

-No real changes here. The number of opcodes may
-change. Pvars may become part of basic frame. Could
-add more opcodes that pop.

FVARk
fvar1-noneop37
FVARX
fvar2-noneSB
FVAR←X
setfvar2-noneSB
GVARX
gvar3-noneDB
GVARX←
setgvar3-noneDB

-No real changes. Some thought on implementation
-is required.

JUMPk
jump1’intop4-16
JUMPX
jump2’intSBse-
JUMPXX
jump3’intDBse-
FJUMPk
fjump1’intop4-16
FJUMPX
fjump2’intSBse-
TJUMPk
tjump1’intop4-16
TJUMPX
tjump2’intSBse-
NFJUMPX
nfjump2’intSBse-
NTJUMPX
ntjump2’intSBse-

-No real changes. May want to separate forward and
-backward jumping opcodes. May want to add some
-short jumps that don’t refill ibuf. Could add opcodes
-that conditionally pop stack.

FNk
fncall5’ptrQBop35
FNXfncall6’ptrQBSB
APPLYFnfncall1-(stk)(stk)
CHECKAPPLY
-1---
RETURN
-1---
BIND
-1---
UNBIND
-1---
DUNBIND
-1---
CONTEXTSWITC
-1---
STKSCAN
-1---
EVAL
-1---
MYALINK
-1---

-FN0... will be expanded to 7 arguments. FNX will be removed and replaced
- by CONST, CONST, APPLYFN sequence. This will avoid a 6 byte opcode.
- BIND, UNBIND, DUNBIND will be removed and replaced by POPn,
-BINDNIL.n.k, BINDUNBOUND.n.k.

GETBASE
getbase3’intDBse-
GETBASEP
getbasp3’intDBse-
GETFIELD
getfield4’intDBseSB
PUTBASE
putbase3’intDBse-
PUTBASEP
putbasp3’intDBse-
PUTFIELD
putfield4’intDBseSB

-GetBase and GetBasePtr can be combined. Both will
-work on full pointers. Same with Putbase and PutbasePtr
-GetField and PutField will have to be 4 opcodes to
-handle a 32 bit word size. Probably want an immeadiate
-field extract opcode(s) that takes argument on stack.
-The field descriptor can remain in the opcode(s).

PLUS
binarith1--’0
DIFFER
binarith1--’1
LOGAND
binarith1--’5
LOGOR
binarith1--’6
LOGXOR
binarith1--’7
TIMES
binarith1--’2
QUOTIENT
binarith1--’3
REMAINDER
binarith1--’4

GREATERP
binarith1--’10

LLSH1
monarith1--’0
LRSH1
monarith1--’1
LLSH8
monarith1--’2
LRSH8
monarith1--’3

-Only changes would be to use field extract opcode
-for the shifts.

COPY
POP
EQ
SWAP
NOP

-No change.

DTEST
?3
LISTP
NTYPEX
TYPEP

- May want to add some more here.

CONS
RPLCONS
CAR
CDR
RPLACA
RPLACD
***

-These depend on cdr-coding mechanism.

GCREF
CREATECELL
RECLAIMCELL
GCSCAN1
GCSCAN2

-These depend on GC technique.

RPLPTR.n
GETBASEBYTE
PUTBASEBYTE
ADDBASE
VAG2
HILOC
LOLOC

-VAG2, HILOC, LOLOC go way. Need a SetType, GetType
-and maybe something to deal with other fields in top 8 bits.

BIN
BLT
BITBLT

classstkusestkpushargtype
const
0+1
ivar
0+1
pvar
0+1
fvar
0+1
setpvar
10-
setfvar
10-
setivar
10-
setpvarp
1-1-
jump
00
tjump
10
fjump
10
ntjump
1-1-
nfjump
1-1-
binarith
2-2,+1int,int
monari
1-1,+1int
bin
2-2,+1-,-
bin2
2-2,+2
getbase
1-1,+1ptr
getbasep
1-1,+1ptr
putbase
2-2,+1-,ptr
putbasep
2-2,+1ptr,ptr
eq
2-2,+1-,-

end