nameclasslengthtypeformatauxcnt
’Tconst1’ptrnoData’1
’NILconst1’ptrnoData’2
’0const1’intnoData’3
’1const1’intnoData’4
SICconst3’intSB-
SNICconst3’intSBneg-
SICXconst3’intDB-
ATOMNBRconst3’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.
IVARkivar1-noneop37
IVARXivar2-noneSB
IVARX←setivar2-noneSB
PVARkpvar1-noneop37
PVARXpvar2-noneSB
PVAR←ksetpvar1-noneop37
PVAR←↑ksetpvarp1-noneop37
PVAR←Xsetpvar1-noneSB
-No real changes here. The number of opcodes may
-change. Pvars may become part of basic frame. Could
-add more opcodes that pop.
FVARkfvar1-noneop37
FVARXfvar2-noneSB
FVAR←Xsetfvar2-noneSB
GVARXgvar3-noneDB
GVARX←setgvar3-noneDB
-No real changes. Some thought on implementation
-is required.
JUMPkjump1’intop4-16
JUMPXjump2’intSBse-
JUMPXXjump3’intDBse-
FJUMPkfjump1’intop4-16
FJUMPXfjump2’intSBse-
TJUMPktjump1’intop4-16
TJUMPXtjump2’intSBse-
NFJUMPXnfjump2’intSBse-
NTJUMPXntjump2’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.
FNkfncall5’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.
GETBASEgetbase3’intDBse-
GETBASEPgetbasp3’intDBse-
GETFIELDgetfield4’intDBseSB
PUTBASEputbase3’intDBse-
PUTBASEPputbasp3’intDBse-
PUTFIELDputfield4’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).
PLUSbinarith1--’0
DIFFERbinarith1--’1
LOGANDbinarith1--’5
LOGORbinarith1--’6
LOGXORbinarith1--’7
TIMESbinarith1--’2
QUOTIENTbinarith1--’3
REMAINDERbinarith1--’4
GREATERPbinarith1--’10
LLSH1monarith1--’0
LRSH1monarith1--’1
LLSH8monarith1--’2
LRSH8monarith1--’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
const0+1
ivar0+1
pvar0+1
fvar0+1
setpvar10-
setfvar10-
setivar10-
setpvarp1-1-
jump00
tjump10
fjump10
ntjump1-1-
nfjump1-1-
binarith2-2,+1int,int
monari1-1,+1int
bin2-2,+1-,-
bin22-2,+2
getbase1-1,+1ptr
getbasep1-1,+1ptr
putbase2-2,+1-,ptr
putbasep2-2,+1ptr,ptr
eq2-2,+1-,-
end