mruby 3.3.0
mruby is the lightweight implementation of the Ruby language
Loading...
Searching...
No Matches
opcode.h File Reference

More...

#include "mruby/ops.h"
Include dependency graph for opcode.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define OPCODE(x, _)
 
#define OP_L_STRICT   1
 
#define OP_L_CAPTURE   2
 
#define OP_L_METHOD   OP_L_STRICT
 
#define OP_L_LAMBDA   (OP_L_STRICT|OP_L_CAPTURE)
 
#define OP_L_BLOCK   OP_L_CAPTURE
 
#define PEEK_B(pc)
 
#define PEEK_S(pc)
 
#define PEEK_W(pc)
 
#define READ_B()
 
#define READ_S()
 
#define READ_W()
 
#define FETCH_Z()
 
#define FETCH_B()
 
#define FETCH_BB()
 
#define FETCH_BBB()
 
#define FETCH_BS()
 
#define FETCH_BSS()
 
#define FETCH_S()
 
#define FETCH_W()
 
#define FETCH_Z_1()
 
#define FETCH_B_1()
 
#define FETCH_BB_1()
 
#define FETCH_BBB_1()
 
#define FETCH_BS_1()
 
#define FETCH_BSS_1()
 
#define FETCH_S_1()
 
#define FETCH_W_1()
 
#define FETCH_Z_2()
 
#define FETCH_B_2()
 
#define FETCH_BB_2()
 
#define FETCH_BBB_2()
 
#define FETCH_BS_2()
 
#define FETCH_BSS_2()
 
#define FETCH_S_2()
 
#define FETCH_W_2()
 
#define FETCH_Z_3()
 
#define FETCH_B_3()
 
#define FETCH_BB_3()
 
#define FETCH_BBB_3()
 
#define FETCH_BS_3()
 
#define FETCH_BSS_3()
 
#define FETCH_S_3()
 
#define FETCH_W_3()
 

Enumerations

enum  mrb_insn {
  OP_NOP , OP_MOVE , OP_LOADL , OP_LOADI ,
  OP_LOADINEG , OP_LOADI__1 , OP_LOADI_0 , OP_LOADI_1 ,
  OP_LOADI_2 , OP_LOADI_3 , OP_LOADI_4 , OP_LOADI_5 ,
  OP_LOADI_6 , OP_LOADI_7 , OP_LOADI16 , OP_LOADI32 ,
  OP_LOADSYM , OP_LOADNIL , OP_LOADSELF , OP_LOADT ,
  OP_LOADF , OP_GETGV , OP_SETGV , OP_GETSV ,
  OP_SETSV , OP_GETIV , OP_SETIV , OP_GETCV ,
  OP_SETCV , OP_GETCONST , OP_SETCONST , OP_GETMCNST ,
  OP_SETMCNST , OP_GETUPVAR , OP_SETUPVAR , OP_GETIDX ,
  OP_SETIDX , OP_JMP , OP_JMPIF , OP_JMPNOT ,
  OP_JMPNIL , OP_JMPUW , OP_EXCEPT , OP_RESCUE ,
  OP_RAISEIF , OP_SSEND , OP_SSENDB , OP_SEND ,
  OP_SENDB , OP_CALL , OP_SUPER , OP_ARGARY ,
  OP_ENTER , OP_KEY_P , OP_KEYEND , OP_KARG ,
  OP_RETURN , OP_RETURN_BLK , OP_BREAK , OP_BLKPUSH ,
  OP_ADD , OP_ADDI , OP_SUB , OP_SUBI ,
  OP_MUL , OP_DIV , OP_EQ , OP_LT ,
  OP_LE , OP_GT , OP_GE , OP_ARRAY ,
  OP_ARRAY2 , OP_ARYCAT , OP_ARYPUSH , OP_ARYSPLAT ,
  OP_AREF , OP_ASET , OP_APOST , OP_INTERN ,
  OP_SYMBOL , OP_STRING , OP_STRCAT , OP_HASH ,
  OP_HASHADD , OP_HASHCAT , OP_LAMBDA , OP_BLOCK ,
  OP_METHOD , OP_RANGE_INC , OP_RANGE_EXC , OP_OCLASS ,
  OP_CLASS , OP_MODULE , OP_EXEC , OP_DEF ,
  OP_ALIAS , OP_UNDEF , OP_SCLASS , OP_TCLASS ,
  OP_DEBUG , OP_ERR , OP_EXT1 , OP_EXT2 ,
  OP_EXT3 , OP_STOP
}
 

Detailed Description

  • RiteVM operation codes

See Copyright Notice in mruby.h

Macro Definition Documentation

◆ FETCH_B

#define FETCH_B ( )
Value:
do {a=READ_B();} while (0)

◆ FETCH_B_1

#define FETCH_B_1 ( )
Value:
FETCH_S()

◆ FETCH_B_2

#define FETCH_B_2 ( )
Value:
FETCH_B()

◆ FETCH_B_3

#define FETCH_B_3 ( )
Value:
FETCH_B()

◆ FETCH_BB

#define FETCH_BB ( )
Value:
do {a=READ_B(); b=READ_B();} while (0)

◆ FETCH_BB_1

#define FETCH_BB_1 ( )
Value:
do {a=READ_S(); b=READ_B();} while (0)

◆ FETCH_BB_2

#define FETCH_BB_2 ( )
Value:
do {a=READ_B(); b=READ_S();} while (0)

◆ FETCH_BB_3

#define FETCH_BB_3 ( )
Value:
do {a=READ_S(); b=READ_S();} while (0)

◆ FETCH_BBB

#define FETCH_BBB ( )
Value:
do {a=READ_B(); b=READ_B(); c=READ_B();} while (0)

◆ FETCH_BBB_1

#define FETCH_BBB_1 ( )
Value:
do {a=READ_S(); b=READ_B(); c=READ_B();} while (0)

◆ FETCH_BBB_2

#define FETCH_BBB_2 ( )
Value:
do {a=READ_B(); b=READ_S(); c=READ_B();} while (0)

◆ FETCH_BBB_3

#define FETCH_BBB_3 ( )
Value:
do {a=READ_S(); b=READ_S(); c=READ_B();} while (0)

◆ FETCH_BS

#define FETCH_BS ( )
Value:
do {a=READ_B(); b=READ_S();} while (0)

◆ FETCH_BS_1

#define FETCH_BS_1 ( )
Value:
do {a=READ_S(); b=READ_S();} while (0)

◆ FETCH_BS_2

#define FETCH_BS_2 ( )
Value:
FETCH_BS()

◆ FETCH_BS_3

#define FETCH_BS_3 ( )
Value:
do {a=READ_S(); b=READ_S();} while (0)

◆ FETCH_BSS

#define FETCH_BSS ( )
Value:
do {a=READ_B(); b=READ_S(); c=READ_S();} while (0)

◆ FETCH_BSS_1

#define FETCH_BSS_1 ( )
Value:
do {a=READ_S(); b=READ_S();c=READ_S();} while (0)

◆ FETCH_BSS_2

#define FETCH_BSS_2 ( )
Value:
FETCH_BSS()

◆ FETCH_BSS_3

#define FETCH_BSS_3 ( )
Value:
FETCH_BSS_1()

◆ FETCH_S

#define FETCH_S ( )
Value:
do {a=READ_S();} while (0)

◆ FETCH_S_1

#define FETCH_S_1 ( )
Value:
FETCH_S()

◆ FETCH_S_2

#define FETCH_S_2 ( )
Value:
FETCH_S()

◆ FETCH_S_3

#define FETCH_S_3 ( )
Value:
FETCH_S()

◆ FETCH_W

#define FETCH_W ( )
Value:
do {a=READ_W();} while (0)

◆ FETCH_W_1

#define FETCH_W_1 ( )
Value:
FETCH_W()

◆ FETCH_W_2

#define FETCH_W_2 ( )
Value:
FETCH_W()

◆ FETCH_W_3

#define FETCH_W_3 ( )
Value:
FETCH_W()

◆ FETCH_Z

#define FETCH_Z ( )
Value:
/* nothing */

◆ FETCH_Z_1

#define FETCH_Z_1 ( )
Value:
FETCH_Z()

◆ FETCH_Z_2

#define FETCH_Z_2 ( )
Value:
FETCH_Z()

◆ FETCH_Z_3

#define FETCH_Z_3 ( )
Value:
FETCH_Z()

◆ OPCODE

#define OPCODE ( x,
_ )
Value:
OP_ ## x,

◆ PEEK_B

#define PEEK_B ( pc)
Value:
(*(pc))

◆ PEEK_S

#define PEEK_S ( pc)
Value:
((pc)[0]<<8|(pc)[1])

◆ PEEK_W

#define PEEK_W ( pc)
Value:
((pc)[0]<<16|(pc)[1]<<8|(pc)[2])

◆ READ_B

#define READ_B ( )
Value:
PEEK_B(pc++)

◆ READ_S

#define READ_S ( )
Value:
(pc+=2, PEEK_S(pc-2))

◆ READ_W

#define READ_W ( )
Value:
(pc+=3, PEEK_W(pc-3))