Opcodes
Last updated
Last updated
-A,B,Index,Length
Opcode | Serialization Internal Value | Arguments | Description | Gas cost |
---|---|---|---|---|
NOP
0
Does nothing.
-
MOVE
1
A,B
Copies reg A to B by reference.
-
COPY
2
A,B
Copies reg A to B by value.
-
PUSH
3
A
Pushes value of reg A into the stack.
-
POP
4
A
Pops a value from the stack and copies it into reg A.
-
SWAP
5
A,B
Swaps reg A and B values.
-
CALL
6
Count,Offset
Creates a new context with Count registers and jumps to Offset.
-
EXTCALL
7
A
Takes a string as method name from reg A and executes an interop call.
-
JMP
8
A
Jumps to offset A.
-
JMPIF
9
A,B
Jumps to offset A if reg B evaluates to true.
-
JMPNOT
10
A,B
Jumps to offset A if reg B evaluates to false.
-
RET
11
-
Terminates current context.
-
THROW
12
A
Terminates current execution with an VM exception (with contents of reg A).
-
LOAD
13
A,Type,Data
Loads the Data of the specified Type into reg A.
-
CAST
14
A,B,Type
Casts the value of reg A into the specified Type and stores it in reg B.
-
CAT
15
A,B,C
Merges content of reg A and reg B and puts result into reg C.
-
RANGE
16
Copies sub-section of reg A based on the specified Index and Length and puts the result into reg B.
-
LEFT
17
A,B,Length
Similar as RANGE but with index equals to zero.
-
RIGHT
18
A,B,Length
Similar to RANGE but with the index being calculated by subtracting index from the content length of reg A.
-
SIZE
19
A
Returns RAM size of reg A.
-
COUNT
20
A
Returns number of elements if reg A is a struct, or 1 otherwise.
-
NOT
21
A,B
Negates value of reg A and put it into reg B.
-
AND
22
Does AND operation of reg A and reg B and puts the result into reg C.
-
OR
23
A,B,C
Does OR operation of reg A and reg B and puts the result into reg C.
-
XOR
24
A,B,C
Does XOR operation of reg A and reg B and puts the result into reg C.
-
EQUAL
25
A,B,C
Does EQUAL operationg of reg A and reg B and puts the result into reg C.
-
LT
26
A,B,C
Does LT (less than) operation of reg A and reg B and puts the result into reg C.
-
GT
27
A,B,C
Does GT (greater than) operation of reg A and reg B and puts the result into reg C.
-
LTE
28
A,B,C
Does LTE (less or equal than) operation of reg A and reg B and puts the result into reg C.
-
GTE
29
A,B,C
Does GTE (great or equal than) operation of reg A and reg B and puts the result into reg C.
-
INC
30
A
Increments value of reg A.
-
DEC
31
A
Decrements value of reg A.
-
SIGN
32
A,B
Returns the sign (1, -1 or 0) of reg A and puts it into reg B.
-
NEGATE
33
A,B
Inverts the sign (1 or -1) of reg A and puts it into reg B.
-
ABS
34
A
Puts the absolute value of reg A into reg B.
-
ADD
35
A,B,C
Does ADD operation of reg A and reg B and puts the result into reg C.
-
SUB
36
A,B,C
Does SUB operation of reg A and reg B and puts the result into reg C.
-
MUL
37
A,B,C
Does MUL operation of reg A and reg B and puts the result into reg C.
-
DIV
38
A,B,C
Does DIV operation of reg A and reg B and puts the result into reg C.
-
MOD
39
A,B,C
Does MOD operation of reg A and reg B and puts the result into reg C.
-
SHL
40
A,B,C
Does SHL operation of reg A and reg B and puts the result into reg C.
-
SHR
41
A,B,C
Does SHR operation of reg A and reg B and puts the result into reg C.
-
MIN
42
A,B,C
Does MIN operation of reg A and reg B and puts the result into reg C.
-
MAX
43
A,B,C
Does MAX operation of reg A and reg B and puts the result into reg C.
-
POW
44
A,B,C
Does POW operation of reg A and reg B and puts the result into reg C.
-
CTX
45
A,B
Takes a string from reg A, and if validate context name, puts a context instance into reg B.
-
SWITCH
46
A
Switches execution to an external context stored in reg A.
-
PUT
47
A,B,C
Puts content of reg A into field of reg B, where the field name is reg C.
-
GET
48
A,B,C
Puts content of field of reg B into reg A, where the field name is reg C.
-
CLEAR
49
A
Clears reg A (makes it have value of type None).
-
UNPACK
50
A,B
Unpacks serialized struct stored in reg A and stores the result into reg B.
-
PACK
51
-
Unused for now.
-
DEBUG
52
-
Triggers a break when attached to a debugger, otherwise equivalent to NOP.
-