User:Zarutian/Smallcaps

From Erights

(Difference between revisions)
Jump to: navigation, search
m
Line 47: Line 47:
                                     wholenum of ivarAuditorpairs to pop of the stack
                                     wholenum of ivarAuditorpairs to pop of the stack
                                     some sort of reference to code that handles calls and sends to the object
                                     some sort of reference to code that handles calls and sends to the object
-
   0x21 OP_LIST_PATT
+
   0x21 OP_LIST_PATT     [optEjector, specimen],[] => OP_LIST_PATT(n) => [optEjector, specimen[n-1]..., optEjector, specimen[0]]
 +
                        metanote: is n a wholenum?
   0x22 OP_CDR_PATT
   0x22 OP_CDR_PATT
    
    

Revision as of 16:17, 5 March 2010

Notes of what I have gleaned from the incomplete spefication and implementation of Smallcaps.

Smallcaps is a bytecode based format of executable code.

The opcodes are:

 Hex Memnomic         Effects/Description
 
 0x01 OP_DUP           [x],[] => OP_DUP => [x, x],[]
 0x02 OP_POP           [x],[] => OP_POP => [],[]
 0x03 OP_SWAP          [x, y],[] => OP_SWAP => [y, x],[]
 0x04 OP_ROT           [x, y, z],[] => OP_ROT => [y, z, x],[]
 0x05 OP_RETURN        [x],[] => OP_RETURN
 
 0x08 OP_JUMP          [],[] => OP_JUMP(label) => [],[]
                       label := ?Waterken Wholenum?
 0x09 OP_BRANCH        [ootEjector, flag],[] => OP_BRANCH => [],[]
 0x0A OP_CALL_ONLY     [recip, args...],[] => OP_CALL_ONLY(verb, arity) => [],[]
 0x0B OP_CALL          [recip, args...],[] => OP_CALL(verb, arity) => [result],[]
                       verb := ?Waterken UTF8 string?
                       arity := ?Waterken Wholenum?
 
 0x0E OP_EJECTOR_ONLY  [],[] => OP_EJECTOR_ONLY(label) => [ejector],[handler] 
                       when ejector is invoked: [...],[...] => ejector(_) => [],[]
 0x0F OP_EJECTOR       [],[] => OP_EJECTOR(label) => [ejector],[handler]
                       when ejector is invoked: [...],[...] => ejector(result) => [result],[]
 0x10 OP_TRY           [],[] => OP_TRY(label) => [],[handler]
                       when handler is invoked: [...],[...] => handler(arg) => [arg],[]
                       when handler is dropped: [...],[...] => handler.drop(_) => [...],[...]
 0x11 OP_UNWIND        [],[] => OP_UNWIND(label) => [],[handler]
                       when handler is invoked: [...],[...] => handler(arg) => [rethrower(arg)],[]
                       when handler is dropped: [...],[...] => handler.drop(pc) => [returner(pc)],[]
 0x12 OP_END_HANDLER   [],[handler] => OP_END_HANDLER => [],[]
 
 0x16 OP_WHOLE_NUM     [],[] => OP_WHOLE_NUM(wholeNum) => [wholeNum],[]
 0x17 OP_NEG_INT       [],[] => OP_NEG_INT(wholeNum) => [-wholeNum],[]
 0x18 OP_FLOAT64       [],[] => OP_FLOAT64(float64) => [float64],[]
 0x19 OP_CHAR          [],[] => OP_CHAR(chr) => [chr],[]
 0x1A OP_STRING        [],[] => OP_STRING(str) => [str],[]
 0x1B OP_TWINE         [],[] => OP_TWINE(twine) => [twine],[]
 0x1C OP_TRUE          [],[] => OP_TRUE => [true],[]
 0x1D OP_FALSE         [],[] => OP_FALSE => [false],[]
 0x1E OP_NULL          [],[] => OP_NULL => [null],[]
 0x1F OP_SCOPE         [],[] => OP_SCOPE => [scope],[]
 0x20 OP_OBJECT        [ivars..., auditors...],[] => OP_OBJECT(<metanote: missing>) => [object],[]
                       metanote: hypothesis: OP_OBJECT takes these immitiate args:
                                   wholenum of ivarAuditorpairs to pop of the stack
                                   some sort of reference to code that handles calls and sends to the object
 0x21 OP_LIST_PATT     [optEjector, specimen],[] => OP_LIST_PATT(n) => [optEjector, specimen[n-1]..., optEjector, specimen[0]]
                       metanote: is n a wholenum?
 0x22 OP_CDR_PATT
 
 0x28 OP_NOUN
   +addrMode
 0x30 OP_SLOT
   +addrMode
 0x38 OP_ASSIGN
   +addrMode
 0x40 OP_BIND
   +addrMode
 0x48 OP_BIND_SLOT
   +addrMode
Personal tools
more tools