NOP

Opcode Name Arguments
00 NOP  


STACK PUSH

Opcode Name Arguments
01 PUSH_NIL  
02 PUSH_SELF  
03 PUSH_TRUE  
04 PUSH_FALSE  
05 PUSH_STRING vlc
06 PUSH_NUMBER uint64
07 PUSH_NUMBER_UINT8 uint8
08 PUSH_NUMBER_INT32 int32
09 PUSH_NUMBER_UINT32 uint32
0A PUSH_NUMBER_UINT64 uint64
0B PUSH_ARRAY uint16
0C PUSH_CLASS uint16
0D PUSH_CONSTANT uint16
0E PUSH_ARG uint16
0F PUSH_INSTVAR  
10 PUSH_SYMBOL vlc
11 PUSH_HAS_BLOCK  
12 PUSH_METHOD vlc
13 PUSH_SSA reg


STACK OTHER

Opcode Name Arguments
14 POP uint16
15 DUP  


CONSTANTS

Opcode Name Arguments
16 CONSTANT_SYMBOL vlc
17 CONSTANT_STRING vlc
18 CONSTANT_NUMBER uint64


CALLS

Opcode Name Arguments
19 CALL uint16
1A CALL_BLOCK uint16
1B INSTCALL uint16
1C INSTCALL_BLOCK uint16
1D HARDCALL uint16
1E HARDCALL_BLOCK uint16
1F CAST uint16


FLOW

Opcode Name Arguments
20 JMP int16
21 JMP_IF int16
22 JMP_IFN int16
23 JMP_IF2 int16, int16
24 Q_JMP_IF2 reg, int16, int16
25 RETURN  
26 YIELD uint16


VARIABLES

Opcode Name Arguments
27 SET_INSTVAR vlc


COVERAGE

Opcode Name Arguments
28 COV_FILE uint16, vlc
29 COV uint16, uint16


OTHER

Opcode Name Arguments
2A START_FUNCTION vlc, uint16, uint16, uint16
2B LOAD_FUNCTION uint16, vlc, uint16
2C STACK_RESERVE uint16
2D DEFINE_CLASS vlc, uint16, uint16
2E BREAK_LOAD  
2F REFLECT uint16
30 DESCRIBE_FUNCTION vlc, uint16


REGISTER-BASED OPCODES - SETTERS

Opcode Name Arguments
31 Q_SET_CONSTANT reg, int16
32 Q_SET_POP reg
33 Q_SET_NUMBER reg, uint64
34 Q_SET_ARG reg, uint16
35 Q_SET_CLASS reg, uint16
36 Q_SET_CALL reg, symbol, reglist
37 Q_SET_SYSCALL reg, uint8, reglist
38 Q_SET_REG reg, reg
39 Q_SET_CLOSURE reg, uint16
3A Q_SET_NIL reg
3B Q_SET_INSTCALL reg, reg, symbol, reglist
3C Q_SET_CALL_BLOCK reg, symbol, symbol, reg, reglist
3D Q_SET_TRUE reg
3E Q_SET_FALSE reg
3F Q_SET_INSTVAR reg, symbol


REGISTER-BASED OPCODES - OTHER

Opcode Name Arguments
40 Q_RELEASE reg
41 Q_CHANGE_INSTVAR symbol, reg


Autogenerated from src/shared/opcodes.rb, last revised: 2017-09-22