mruby  2.0.1
mruby is the lightweight implementation of the Ruby language
Macros | Enumerations
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, _)   OP_ ## 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 OP_R_NORMAL   0
 
#define OP_R_BREAK   1
 
#define OP_R_RETURN   2
 
#define PEEK_B(pc)   (*(pc))
 
#define PEEK_S(pc)   ((pc)[0]<<8|(pc)[1])
 
#define PEEK_W(pc)   ((pc)[0]<<16|(pc)[1]<<8|(pc)[2])
 
#define READ_B()   PEEK_B(pc++)
 
#define READ_S()   (pc+=2, PEEK_S(pc-2))
 
#define READ_W()   (pc+=3, PEEK_W(pc-3))
 
#define FETCH_Z()   /* nothing */
 
#define FETCH_B()   do {a=READ_B();} while (0)
 
#define FETCH_BB()   do {a=READ_B(); b=READ_B();} while (0)
 
#define FETCH_BBB()   do {a=READ_B(); b=READ_B(); c=READ_B();} while (0)
 
#define FETCH_BS()   do {a=READ_B(); b=READ_S();} while (0)
 
#define FETCH_S()   do {a=READ_S();} while (0)
 
#define FETCH_W()   do {a=READ_W();} while (0)
 
#define FETCH_Z_1()   FETCH_Z()
 
#define FETCH_B_1()   FETCH_S()
 
#define FETCH_BB_1()   do {a=READ_S(); b=READ_B();} while (0)
 
#define FETCH_BBB_1()   do {a=READ_S(); b=READ_B(); c=READ_B();} while (0)
 
#define FETCH_BS_1()   do {a=READ_S(); b=READ_S();} while (0)
 
#define FETCH_S_1()   FETCH_S()
 
#define FETCH_W_1()   FETCH_W()
 
#define FETCH_Z_2()   FETCH_Z()
 
#define FETCH_B_2()   FETCH_B()
 
#define FETCH_BB_2()   do {a=READ_B(); b=READ_S();} while (0)
 
#define FETCH_BBB_2()   do {a=READ_B(); b=READ_S(); c=READ_B();} while (0)
 
#define FETCH_BS_2()   FETCH_BS()
 
#define FETCH_S_2()   FETCH_S()
 
#define FETCH_W_2()   FETCH_W()
 
#define FETCH_Z_3()   FETCH_Z()
 
#define FETCH_B_3()   FETCH_B()
 
#define FETCH_BB_3()   do {a=READ_S(); b=READ_S();} while (0)
 
#define FETCH_BBB_3()   do {a=READ_S(); b=READ_S(); c=READ_B();} while (0)
 
#define FETCH_BS_3()   do {a=READ_S(); b=READ_S();} while (0)
 
#define FETCH_S_3()   FETCH_S()
 
#define FETCH_W_3()   FETCH_W()
 

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_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_JMP, OP_JMPIF, OP_JMPNOT,
  OP_JMPNIL, OP_ONERR, OP_EXCEPT, OP_RESCUE,
  OP_POPERR, OP_RAISE, OP_EPUSH, OP_EPOP,
  OP_SENDV, OP_SENDVB, 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_ARYDUP, OP_AREF,
  OP_ASET, OP_APOST, OP_INTERN, 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

See Copyright Notice in mruby.h