|
|
@ -1,5 +1,5 @@ |
|
|
|
/*
|
|
|
|
** $Id: lopcodes.h,v 1.150 2017/04/20 19:53:55 roberto Exp roberto $ |
|
|
|
** $Id: lopcodes.h,v 1.151 2017/04/24 20:26:39 roberto Exp roberto $ |
|
|
|
** Opcodes for Lua virtual machine |
|
|
|
** See Copyright Notice in lua.h |
|
|
|
*/ |
|
|
@ -90,7 +90,7 @@ enum OpMode {iABC, iABx, iAsBx, iAx}; /* basic instruction format */ |
|
|
|
#define SET_OPCODE(i,o) ((i) = (((i)&MASK0(SIZE_OP,POS_OP)) | \ |
|
|
|
((cast(Instruction, o)<<POS_OP)&MASK1(SIZE_OP,POS_OP)))) |
|
|
|
|
|
|
|
#define getarg(i,pos,size) (cast(int, ((i)>>pos) & MASK1(size,0))) |
|
|
|
#define getarg(i,pos,size) (cast(int, ((i)>>(pos)) & MASK1(size,0))) |
|
|
|
#define setarg(i,v,pos,size) ((i) = (((i)&MASK0(size,pos)) | \ |
|
|
|
((cast(Instruction, v)<<pos)&MASK1(size,pos)))) |
|
|
|
|
|
|
@ -100,6 +100,9 @@ enum OpMode {iABC, iABx, iAsBx, iAx}; /* basic instruction format */ |
|
|
|
#define GETARG_B(i) getarg(i, POS_B, SIZE_B) |
|
|
|
#define SETARG_B(i,v) setarg(i, v, POS_B, SIZE_B) |
|
|
|
|
|
|
|
#define GETARG_Br(i) getarg(i, POS_B, SIZE_B - 1) |
|
|
|
#define GETARG_Bk(i) getarg(i, (POS_B + SIZE_B - 1), 1) |
|
|
|
|
|
|
|
#define GETARG_C(i) getarg(i, POS_C, SIZE_C) |
|
|
|
#define SETARG_C(i,v) setarg(i, v, POS_C, SIZE_C) |
|
|
|
|
|
|
@ -187,6 +190,7 @@ OP_NEWTABLE,/* A B C R(A) := {} (size = B,C) */ |
|
|
|
|
|
|
|
OP_SELF,/* A B C R(A+1) := R(B); R(A) := R(B)[RK(C)] */ |
|
|
|
|
|
|
|
OP_ADDI,/* A B C R(A) := R(B) + C */ |
|
|
|
OP_ADD,/* A B C R(A) := RK(B) + RK(C) */ |
|
|
|
OP_SUB,/* A B C R(A) := RK(B) - RK(C) */ |
|
|
|
OP_MUL,/* A B C R(A) := RK(B) * RK(C) */ |
|
|
|