User:Zarutian/Smallcaps
From Erights
(Difference between revisions)
m (Adding to the notes) |
m (Still adding notes) |
||
| Line 5: | Line 5: | ||
The opcodes are: | The opcodes are: | ||
| - | Hex Memnomic | + | 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(_) => [...],[...] | ||
Revision as of 17:09, 30 January 2010
Notes of what I have cleaned 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(_) => [...],[...]

