User:Zarutian/Smallcaps
From Erights
(Difference between revisions)
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