Nut/OS  4.10.3
API Reference
lopcodes.h File Reference
#include <lua/llimits.h>
Include dependency graph for lopcodes.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define SIZE_C   9
#define SIZE_B   9
#define SIZE_Bx   (SIZE_C + SIZE_B)
#define SIZE_A   8
#define SIZE_OP   6
#define POS_OP   0
#define POS_A   (POS_OP + SIZE_OP)
#define POS_C   (POS_A + SIZE_A)
#define POS_B   (POS_C + SIZE_C)
#define POS_Bx   POS_C
#define MAXARG_Bx   MAX_INT
#define MAXARG_sBx   MAX_INT
#define MAXARG_A   ((1<<SIZE_A)-1)
#define MAXARG_B   ((1<<SIZE_B)-1)
#define MAXARG_C   ((1<<SIZE_C)-1)
#define MASK1(n, p)   ((~((~(Instruction)0)<<n))<<p)
#define MASK0(n, p)   (~MASK1(n,p))
#define GET_OPCODE(i)   (cast(OpCode, ((i)>>POS_OP) & MASK1(SIZE_OP,0)))
#define SET_OPCODE(i, o)
#define GETARG_A(i)   (cast(int, ((i)>>POS_A) & MASK1(SIZE_A,0)))
#define SETARG_A(i, u)
#define GETARG_B(i)   (cast(int, ((i)>>POS_B) & MASK1(SIZE_B,0)))
#define SETARG_B(i, b)
#define GETARG_C(i)   (cast(int, ((i)>>POS_C) & MASK1(SIZE_C,0)))
#define SETARG_C(i, b)
#define GETARG_Bx(i)   (cast(int, ((i)>>POS_Bx) & MASK1(SIZE_Bx,0)))
#define SETARG_Bx(i, b)
#define GETARG_sBx(i)   (GETARG_Bx(i)-MAXARG_sBx)
#define SETARG_sBx(i, b)   SETARG_Bx((i),cast(unsigned int, (b)+MAXARG_sBx))
#define CREATE_ABC(o, a, b, c)
#define CREATE_ABx(o, a, bc)
#define BITRK   (1 << (SIZE_B - 1))
#define ISK(x)   ((x) & BITRK)
#define INDEXK(r)   ((int)(r) & ~BITRK)
#define MAXINDEXRK   (BITRK - 1)
#define RKASK(x)   ((x) | BITRK)
#define NO_REG   MAXARG_A
#define NUM_OPCODES   (cast(int, OP_VARARG) + 1)
#define getOpMode(m)   (cast(enum OpMode, luaP_opmodes[m] & 3))
#define getBMode(m)   (cast(enum OpArgMask, (luaP_opmodes[m] >> 4) & 3))
#define getCMode(m)   (cast(enum OpArgMask, (luaP_opmodes[m] >> 2) & 3))
#define testAMode(m)   (luaP_opmodes[m] & (1 << 6))
#define testTMode(m)   (luaP_opmodes[m] & (1 << 7))
#define LFIELDS_PER_FLUSH   50

Enumerations

enum  OpMode { iABC, iABx, iAsBx }
enum  OpCode {
  OP_MOVE, OP_LOADK, OP_LOADBOOL, OP_LOADNIL,
  OP_GETUPVAL, OP_GETGLOBAL, OP_GETTABLE, OP_SETGLOBAL,
  OP_SETUPVAL, OP_SETTABLE, OP_NEWTABLE, OP_SELF,
  OP_ADD, OP_SUB, OP_MUL, OP_DIV,
  OP_MOD, OP_POW, OP_UNM, OP_NOT,
  OP_LEN, OP_CONCAT, OP_JMP, OP_EQ,
  OP_LT, OP_LE, OP_TEST, OP_TESTSET,
  OP_CALL, OP_TAILCALL, OP_RETURN, OP_FORLOOP,
  OP_FORPREP, OP_TFORLOOP, OP_SETLIST, OP_CLOSE,
  OP_CLOSURE, OP_VARARG
}
enum  OpArgMask { OpArgN, OpArgU, OpArgR, OpArgK }

Variables

LUAI_DATA const lu_byte luaP_opmodes [NUM_OPCODES]
LUAI_DATA const char *const luaP_opnames [NUM_OPCODES+1]

Define Documentation

#define SIZE_C   9

Definition at line 37 of file lopcodes.h.

#define SIZE_B   9

Definition at line 38 of file lopcodes.h.

#define SIZE_Bx   (SIZE_C + SIZE_B)

Definition at line 39 of file lopcodes.h.

#define SIZE_A   8

Definition at line 40 of file lopcodes.h.

#define SIZE_OP   6

Definition at line 42 of file lopcodes.h.

#define POS_OP   0

Definition at line 44 of file lopcodes.h.

#define POS_A   (POS_OP + SIZE_OP)

Definition at line 45 of file lopcodes.h.

#define POS_C   (POS_A + SIZE_A)

Definition at line 46 of file lopcodes.h.

#define POS_B   (POS_C + SIZE_C)

Definition at line 47 of file lopcodes.h.

#define POS_Bx   POS_C

Definition at line 48 of file lopcodes.h.

#define MAXARG_Bx   MAX_INT

Definition at line 60 of file lopcodes.h.

#define MAXARG_sBx   MAX_INT

Definition at line 61 of file lopcodes.h.

#define MAXARG_A   ((1<<SIZE_A)-1)

Definition at line 65 of file lopcodes.h.

#define MAXARG_B   ((1<<SIZE_B)-1)

Definition at line 66 of file lopcodes.h.

#define MAXARG_C   ((1<<SIZE_C)-1)

Definition at line 67 of file lopcodes.h.

#define MASK1 (   n,
 
)    ((~((~(Instruction)0)<<n))<<p)

Definition at line 71 of file lopcodes.h.

#define MASK0 (   n,
 
)    (~MASK1(n,p))

Definition at line 74 of file lopcodes.h.

#define GET_OPCODE (   i)    (cast(OpCode, ((i)>>POS_OP) & MASK1(SIZE_OP,0)))

Definition at line 80 of file lopcodes.h.

#define SET_OPCODE (   i,
 
)
Value:
((i) = (((i)&MASK0(SIZE_OP,POS_OP)) | \
                ((cast(Instruction, o)<<POS_OP)&MASK1(SIZE_OP,POS_OP))))

Definition at line 81 of file lopcodes.h.

#define GETARG_A (   i)    (cast(int, ((i)>>POS_A) & MASK1(SIZE_A,0)))

Definition at line 84 of file lopcodes.h.

#define SETARG_A (   i,
 
)
Value:
((i) = (((i)&MASK0(SIZE_A,POS_A)) | \
                ((cast(Instruction, u)<<POS_A)&MASK1(SIZE_A,POS_A))))

Definition at line 85 of file lopcodes.h.

#define GETARG_B (   i)    (cast(int, ((i)>>POS_B) & MASK1(SIZE_B,0)))

Definition at line 88 of file lopcodes.h.

#define SETARG_B (   i,
 
)
Value:
((i) = (((i)&MASK0(SIZE_B,POS_B)) | \
                ((cast(Instruction, b)<<POS_B)&MASK1(SIZE_B,POS_B))))

Definition at line 89 of file lopcodes.h.

#define GETARG_C (   i)    (cast(int, ((i)>>POS_C) & MASK1(SIZE_C,0)))

Definition at line 92 of file lopcodes.h.

#define SETARG_C (   i,
 
)
Value:
((i) = (((i)&MASK0(SIZE_C,POS_C)) | \
                ((cast(Instruction, b)<<POS_C)&MASK1(SIZE_C,POS_C))))

Definition at line 93 of file lopcodes.h.

#define GETARG_Bx (   i)    (cast(int, ((i)>>POS_Bx) & MASK1(SIZE_Bx,0)))

Definition at line 96 of file lopcodes.h.

#define SETARG_Bx (   i,
 
)
Value:
((i) = (((i)&MASK0(SIZE_Bx,POS_Bx)) | \
                ((cast(Instruction, b)<<POS_Bx)&MASK1(SIZE_Bx,POS_Bx))))

Definition at line 97 of file lopcodes.h.

#define GETARG_sBx (   i)    (GETARG_Bx(i)-MAXARG_sBx)

Definition at line 100 of file lopcodes.h.

#define SETARG_sBx (   i,
 
)    SETARG_Bx((i),cast(unsigned int, (b)+MAXARG_sBx))

Definition at line 101 of file lopcodes.h.

#define CREATE_ABC (   o,
  a,
  b,
 
)
Value:
((cast(Instruction, o)<<POS_OP) \
                        | (cast(Instruction, a)<<POS_A) \
                        | (cast(Instruction, b)<<POS_B) \
                        | (cast(Instruction, c)<<POS_C))

Definition at line 104 of file lopcodes.h.

#define CREATE_ABx (   o,
  a,
  bc 
)
Value:

Definition at line 109 of file lopcodes.h.

#define BITRK   (1 << (SIZE_B - 1))

Definition at line 119 of file lopcodes.h.

#define ISK (   x)    ((x) & BITRK)

Definition at line 122 of file lopcodes.h.

#define INDEXK (   r)    ((int)(r) & ~BITRK)

Definition at line 125 of file lopcodes.h.

#define MAXINDEXRK   (BITRK - 1)

Definition at line 127 of file lopcodes.h.

#define RKASK (   x)    ((x) | BITRK)

Definition at line 130 of file lopcodes.h.

#define NO_REG   MAXARG_A

Definition at line 136 of file lopcodes.h.

#define NUM_OPCODES   (cast(int, OP_VARARG) + 1)

Definition at line 211 of file lopcodes.h.

#define getOpMode (   m)    (cast(enum OpMode, luaP_opmodes[m] & 3))

Definition at line 254 of file lopcodes.h.

#define getBMode (   m)    (cast(enum OpArgMask, (luaP_opmodes[m] >> 4) & 3))

Definition at line 255 of file lopcodes.h.

#define getCMode (   m)    (cast(enum OpArgMask, (luaP_opmodes[m] >> 2) & 3))

Definition at line 256 of file lopcodes.h.

#define testAMode (   m)    (luaP_opmodes[m] & (1 << 6))

Definition at line 257 of file lopcodes.h.

#define testTMode (   m)    (luaP_opmodes[m] & (1 << 7))

Definition at line 258 of file lopcodes.h.

#define LFIELDS_PER_FLUSH   50

Definition at line 265 of file lopcodes.h.


Enumeration Type Documentation

enum OpMode
Enumerator:
iABC 
iABx 
iAsBx 

Definition at line 31 of file lopcodes.h.

enum OpCode
Enumerator:
OP_MOVE 
OP_LOADK 
OP_LOADBOOL 
OP_LOADNIL 
OP_GETUPVAL 
OP_GETGLOBAL 
OP_GETTABLE 
OP_SETGLOBAL 
OP_SETUPVAL 
OP_SETTABLE 
OP_NEWTABLE 
OP_SELF 
OP_ADD 
OP_SUB 
OP_MUL 
OP_DIV 
OP_MOD 
OP_POW 
OP_UNM 
OP_NOT 
OP_LEN 
OP_CONCAT 
OP_JMP 
OP_EQ 
OP_LT 
OP_LE 
OP_TEST 
OP_TESTSET 
OP_CALL 
OP_TAILCALL 
OP_RETURN 
OP_FORLOOP 
OP_FORPREP 
OP_TFORLOOP 
OP_SETLIST 
OP_CLOSE 
OP_CLOSURE 
OP_VARARG 

Definition at line 150 of file lopcodes.h.

enum OpArgMask
Enumerator:
OpArgN 
OpArgU 
OpArgR 
OpArgK 

Definition at line 245 of file lopcodes.h.


Variable Documentation

LUAI_DATA const lu_byte luaP_opmodes[NUM_OPCODES]

Definition at line 252 of file lopcodes.h.

LUAI_DATA const char* const luaP_opnames[NUM_OPCODES+1]

Definition at line 261 of file lopcodes.h.