[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/TressaOrg/mruby/master/include/mruby/opcode.h [Back]  [Original]

/*
** mruby/opcode.h - RiteVM operation codes
**
** See Copyright Notice in mruby.h
*/

#ifndef MRUBY_OPCODE_H
#define MRUBY_OPCODE_H

#define MAXARG_Bx        (0xffff)
#define MAXARG_sBx       (MAXARG_Bx>>1)         /* 'sBx' is signed */

/* instructions: packed 32 bit      */
/* -------------------------------  */
/*     A:B:C:OP = 9: 9: 7: 7        */
/*      A:Bx:OP =    9:16: 7        */
/*        Ax:OP =      25: 7        */
/*   A:Bz:Cz:OP = 9:14: 2: 7        */

#define GET_OPCODE(i)            ((int)(((mrb_code)(i)) & 0x7f))
#define GETARG_A(i)              ((int)((((mrb_code)(i)) >> 23) & 0x1ff))
#define GETARG_B(i)              ((int)((((mrb_code)(i)) >> 14) & 0x1ff))
#define GETARG_C(i)              ((int)((((mrb_code)(i)) >>  7) & 0x7f))
#define GETARG_Bx(i)             ((int)((((mrb_code)(i)) >>  7) & 0xffff))
#define GETARG_sBx(i)            ((int)(GETARG_Bx(i)-MAXARG_sBx))
#define GETARG_Ax(i)             ((int32_t)((((mrb_code)(i)) >>  7) & 0x1ffffff))
#define GETARG_UNPACK_b(i,n1,n2) ((int)((((mrb_code)(i)) >> (7+(n2))) & (((1 7) & (((1

Web Proxy Viewer  |  New URL  |  Original Page