name class length type format aux cnt 'T const 1 'ptr noData '1 'NIL const 1 'ptr noData '2 '0 const 1 'int noData '3 '1 const 1 'int noData '4 SIC const 3 'int SB - SNIC const 3 'int SBneg - SICX const 3 'int DB - ATOMNBR const 3 'atom DB - PCONST const 5 'ptr QB - FCONST const 5 'float QB - ICONST const 5 'int QB -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 ivar 1 - none op3 7 IVARX ivar 2 - none SB IVARX_ setivar 2 - none SB PVARk pvar 1 - none op3 7 PVARX pvar 2 - none SB PVAR_k setpvar 1 - none op3 7 PVAR_^k setpvarp 1 - none op3 7 PVAR_X setpvar 1 - none SB -No real changes here. The number of opcodes may -change. Pvars may become part of basic frame. Could -add more opcodes that pop. FVARk fvar 1 - none op3 7 FVARX fvar 2 - none SB FVAR_X setfvar 2 - none SB GVARX gvar 3 - none DB GVARX_ setgvar 3 - none DB -No real changes. Some thought on implementation -is required. JUMPk jump 1 'int op4 - 16 JUMPX jump 2 'int SBse - JUMPXX jump 3 'int DBse - FJUMPk fjump 1 'int op4 - 16 FJUMPX fjump 2 'int SBse - TJUMPk tjump 1 'int op4 - 16 TJUMPX tjump 2 'int SBse - NFJUMPX nfjump 2 'int SBse - NTJUMPX ntjump 2 'int SBse - -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 fncall 5 'ptr QB op3 5 FNX fncall 6 'ptr QB SB APPLYFn fncall 1 - (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 getbase 3 'int DBse - GETBASEP getbasp 3 'int DBse - GETFIELD getfield 4 'int DBse SB PUTBASE putbase 3 'int DBse - PUTBASEP putbasp 3 'int DBse - PUTFIELD putfield 4 'int DBse SB -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 binarith 1 - - '0 DIFFER binarith 1 - - '1 LOGAND binarith 1 - - '5 LOGOR binarith 1 - - '6 LOGXOR binarith 1 - - '7 TIMES binarith 1 - - '2 QUOTIENT binarith 1 - - '3 REMAINDER binarith 1 - - '4 GREATERP binarith 1 - - '10 LLSH1 monarith 1 - - '0 LRSH1 monarith 1 - - '1 LLSH8 monarith 1 - - '2 LRSH8 monarith 1 - - '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 class stkuse stkpush argtype const 0 +1 ivar 0 +1 pvar 0 +1 fvar 0 +1 setpvar 1 0 - setfvar 1 0 - setivar 1 0 - setpvarp 1 -1 - jump 0 0 tjump 1 0 fjump 1 0 ntjump 1 -1 - nfjump 1 -1 - binarith 2 -2,+1 int,int monari 1 -1,+1 int bin 2 -2,+1 -,- bin2 2 -2,+2 getbase 1 -1,+1 ptr getbasep 1 -1,+1 ptr putbase 2 -2,+1 -,ptr putbasep 2 -2,+1 ptr,ptr eq 2 -2,+1 -,- end(0,6080)(1,8096)(2,9888)(3,11488)(4,13728)(5,15168)\1u4U1u5U1u6U1u4U1u6U1u3U1u3U205i6I19i6I21i6I1226i24I1797u5U1u6U1u7U1u7U