lua5.4
宏定义 | 枚举
lopcodes.h 文件参考
#include "llimits.h"
lopcodes.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define SIZE_C   8
 
#define SIZE_B   8
 
#define SIZE_Bx   (SIZE_C + SIZE_B + 1)
 
#define SIZE_A   8
 
#define SIZE_Ax   (SIZE_Bx + SIZE_A)
 
#define SIZE_sJ   (SIZE_Bx + SIZE_A)
 
#define SIZE_OP   7
 
#define POS_OP   0
 
#define POS_A   (POS_OP + SIZE_OP)
 
#define POS_k   (POS_A + SIZE_A)
 
#define POS_B   (POS_k + 1)
 
#define POS_C   (POS_B + SIZE_B)
 
#define POS_Bx   POS_k
 
#define POS_Ax   POS_A
 
#define POS_sJ   POS_A
 
#define L_INTHASBITS(b)   ((UINT_MAX >> ((b) - 1)) >= 1)
 
#define MAXARG_Bx   MAX_INT
 
#define OFFSET_sBx   (MAXARG_Bx>>1) /* 'sBx' is signed */
 
#define MAXARG_Ax   MAX_INT
 
#define MAXARG_sJ   MAX_INT
 
#define OFFSET_sJ   (MAXARG_sJ >> 1)
 
#define MAXARG_A   ((1<<SIZE_A)-1)
 
#define MAXARG_B   ((1<<SIZE_B)-1)
 
#define MAXARG_C   ((1<<SIZE_C)-1)
 
#define OFFSET_sC   (MAXARG_C >> 1)
 
#define int2sC(i)   ((i) + OFFSET_sC)
 
#define sC2int(i)   ((i) - OFFSET_sC)
 
#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 checkopm(i, m)   (getOpMode(GET_OPCODE(i)) == m)
 
#define getarg(i, pos, size)   (cast_int(((i)>>(pos)) & MASK1(size,0)))
 
#define setarg(i, v, pos, size)
 
#define GETARG_A(i)   getarg(i, POS_A, SIZE_A)
 
#define SETARG_A(i, v)   setarg(i, v, POS_A, SIZE_A)
 
#define GETARG_B(i)   check_exp(checkopm(i, iABC), getarg(i, POS_B, SIZE_B))
 
#define GETARG_sB(i)   sC2int(GETARG_B(i))
 
#define SETARG_B(i, v)   setarg(i, v, POS_B, SIZE_B)
 
#define GETARG_C(i)   check_exp(checkopm(i, iABC), getarg(i, POS_C, SIZE_C))
 
#define GETARG_sC(i)   sC2int(GETARG_C(i))
 
#define SETARG_C(i, v)   setarg(i, v, POS_C, SIZE_C)
 
#define TESTARG_k(i)   check_exp(checkopm(i, iABC), (cast_int(((i) & (1u << POS_k)))))
 
#define GETARG_k(i)   check_exp(checkopm(i, iABC), getarg(i, POS_k, 1))
 
#define SETARG_k(i, v)   setarg(i, v, POS_k, 1)
 
#define GETARG_Bx(i)   check_exp(checkopm(i, iABx), getarg(i, POS_Bx, SIZE_Bx))
 
#define SETARG_Bx(i, v)   setarg(i, v, POS_Bx, SIZE_Bx)
 
#define GETARG_Ax(i)   check_exp(checkopm(i, iAx), getarg(i, POS_Ax, SIZE_Ax))
 
#define SETARG_Ax(i, v)   setarg(i, v, POS_Ax, SIZE_Ax)
 
#define GETARG_sBx(i)   check_exp(checkopm(i, iAsBx), getarg(i, POS_Bx, SIZE_Bx) - OFFSET_sBx)
 
#define SETARG_sBx(i, b)   SETARG_Bx((i),cast_uint((b)+OFFSET_sBx))
 
#define GETARG_sJ(i)   check_exp(checkopm(i, isJ), getarg(i, POS_sJ, SIZE_sJ) - OFFSET_sJ)
 
#define SETARG_sJ(i, j)   setarg(i, cast_uint((j)+OFFSET_sJ), POS_sJ, SIZE_sJ)
 
#define CREATE_ABCk(o, a, b, c, k)
 
#define CREATE_ABx(o, a, bc)
 
#define CREATE_Ax(o, a)
 
#define CREATE_sJ(o, j, k)
 
#define MAXINDEXRK   MAXARG_B
 
#define NO_REG   MAXARG_A
 
#define NUM_OPCODES   ((int)(OP_EXTRAARG) + 1)
 
#define getOpMode(m)   (cast(enum OpMode, luaP_opmodes[m] & 7))
 
#define testAMode(m)   (luaP_opmodes[m] & (1 << 3))
 
#define testTMode(m)   (luaP_opmodes[m] & (1 << 4))
 
#define testITMode(m)   (luaP_opmodes[m] & (1 << 5))
 
#define testOTMode(m)   (luaP_opmodes[m] & (1 << 6))
 
#define testMMMode(m)   (luaP_opmodes[m] & (1 << 7))
 
#define isOT(i)
 
#define isIT(i)   (testITMode(GET_OPCODE(i)) && GETARG_B(i) == 0)
 
#define opmode(mm, ot, it, t, a, m)   (((mm) << 7) | ((ot) << 6) | ((it) << 5) | ((t) << 4) | ((a) << 3) | (m))
 
#define LFIELDS_PER_FLUSH   50
 

枚举

enum  OpMode {
  iABC, iABx, iAsBx, iAx,
  isJ
}
 
enum  OpCode {
  OP_MOVE, OP_LOADI, OP_LOADF, OP_LOADK,
  OP_LOADKX, OP_LOADFALSE, OP_LFALSESKIP, OP_LOADTRUE,
  OP_LOADNIL, OP_GETUPVAL, OP_SETUPVAL, OP_GETTABUP,
  OP_GETTABLE, OP_GETI, OP_GETFIELD, OP_SETTABUP,
  OP_SETTABLE, OP_SETI, OP_SETFIELD, OP_NEWTABLE,
  OP_SELF, OP_ADDI, OP_ADDK, OP_SUBK,
  OP_MULK, OP_MODK, OP_POWK, OP_DIVK,
  OP_IDIVK, OP_BANDK, OP_BORK, OP_BXORK,
  OP_SHRI, OP_SHLI, OP_ADD, OP_SUB,
  OP_MUL, OP_MOD, OP_POW, OP_DIV,
  OP_IDIV, OP_BAND, OP_BOR, OP_BXOR,
  OP_SHL, OP_SHR, OP_MMBIN, OP_MMBINI,
  OP_MMBINK, OP_UNM, OP_BNOT, OP_NOT,
  OP_LEN, OP_CONCAT, OP_CLOSE, OP_TBC,
  OP_JMP, OP_EQ, OP_LT, OP_LE,
  OP_EQK, OP_EQI, OP_LTI, OP_LEI,
  OP_GTI, OP_GEI, OP_TEST, OP_TESTSET,
  OP_CALL, OP_TAILCALL, OP_RETURN, OP_RETURN0,
  OP_RETURN1, OP_FORLOOP, OP_FORPREP, OP_TFORPREP,
  OP_TFORCALL, OP_TFORLOOP, OP_SETLIST, OP_CLOSURE,
  OP_VARARG, OP_VARARGPREP, OP_EXTRAARG
}
 

宏定义说明

◆ checkopm

#define checkopm (   i,
 
)    (getOpMode(GET_OPCODE(i)) == m)

◆ CREATE_ABCk

#define CREATE_ABCk (   o,
  a,
  b,
  c,
 
)
值:
| (cast(Instruction, a)<<POS_A) \
| (cast(Instruction, b)<<POS_B) \
| (cast(Instruction, c)<<POS_C) \

◆ CREATE_ABx

#define CREATE_ABx (   o,
  a,
  bc 
)
值:
| (cast(Instruction, a)<<POS_A) \
| (cast(Instruction, bc)<<POS_Bx))

◆ CREATE_Ax

#define CREATE_Ax (   o,
 
)
值:

◆ CREATE_sJ

#define CREATE_sJ (   o,
  j,
 
)
值:
((cast(Instruction, o) << POS_OP) \
| (cast(Instruction, j) << POS_sJ) \
| (cast(Instruction, k) << POS_k))

◆ GET_OPCODE

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

◆ getarg

#define getarg (   i,
  pos,
  size 
)    (cast_int(((i)>>(pos)) & MASK1(size,0)))

◆ GETARG_A

#define GETARG_A (   i)    getarg(i, POS_A, SIZE_A)

◆ GETARG_Ax

#define GETARG_Ax (   i)    check_exp(checkopm(i, iAx), getarg(i, POS_Ax, SIZE_Ax))

◆ GETARG_B

#define GETARG_B (   i)    check_exp(checkopm(i, iABC), getarg(i, POS_B, SIZE_B))

◆ GETARG_Bx

#define GETARG_Bx (   i)    check_exp(checkopm(i, iABx), getarg(i, POS_Bx, SIZE_Bx))

◆ GETARG_C

#define GETARG_C (   i)    check_exp(checkopm(i, iABC), getarg(i, POS_C, SIZE_C))

◆ GETARG_k

#define GETARG_k (   i)    check_exp(checkopm(i, iABC), getarg(i, POS_k, 1))

◆ GETARG_sB

#define GETARG_sB (   i)    sC2int(GETARG_B(i))

◆ GETARG_sBx

#define GETARG_sBx (   i)    check_exp(checkopm(i, iAsBx), getarg(i, POS_Bx, SIZE_Bx) - OFFSET_sBx)

◆ GETARG_sC

#define GETARG_sC (   i)    sC2int(GETARG_C(i))

◆ GETARG_sJ

#define GETARG_sJ (   i)    check_exp(checkopm(i, isJ), getarg(i, POS_sJ, SIZE_sJ) - OFFSET_sJ)

◆ getOpMode

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

◆ int2sC

#define int2sC (   i)    ((i) + OFFSET_sC)

◆ isIT

#define isIT (   i)    (testITMode(GET_OPCODE(i)) && GETARG_B(i) == 0)

◆ isOT

#define isOT (   i)
值:
((testOTMode(GET_OPCODE(i)) && GETARG_C(i) == 0) || \

◆ L_INTHASBITS

#define L_INTHASBITS (   b)    ((UINT_MAX >> ((b) - 1)) >= 1)

◆ LFIELDS_PER_FLUSH

#define LFIELDS_PER_FLUSH   50

◆ MASK0

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

◆ MASK1

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

◆ MAXARG_A

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

◆ MAXARG_Ax

#define MAXARG_Ax   MAX_INT

◆ MAXARG_B

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

◆ MAXARG_Bx

#define MAXARG_Bx   MAX_INT

◆ MAXARG_C

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

◆ MAXARG_sJ

#define MAXARG_sJ   MAX_INT

◆ MAXINDEXRK

#define MAXINDEXRK   MAXARG_B

◆ NO_REG

#define NO_REG   MAXARG_A

◆ NUM_OPCODES

#define NUM_OPCODES   ((int)(OP_EXTRAARG) + 1)

◆ OFFSET_sBx

#define OFFSET_sBx   (MAXARG_Bx>>1) /* 'sBx' is signed */

◆ OFFSET_sC

#define OFFSET_sC   (MAXARG_C >> 1)

◆ OFFSET_sJ

#define OFFSET_sJ   (MAXARG_sJ >> 1)

◆ opmode

#define opmode (   mm,
  ot,
  it,
  t,
  a,
 
)    (((mm) << 7) | ((ot) << 6) | ((it) << 5) | ((t) << 4) | ((a) << 3) | (m))

◆ POS_A

#define POS_A   (POS_OP + SIZE_OP)

◆ POS_Ax

#define POS_Ax   POS_A

◆ POS_B

#define POS_B   (POS_k + 1)

◆ POS_Bx

#define POS_Bx   POS_k

◆ POS_C

#define POS_C   (POS_B + SIZE_B)

◆ POS_k

#define POS_k   (POS_A + SIZE_A)

◆ POS_OP

#define POS_OP   0

◆ POS_sJ

#define POS_sJ   POS_A

◆ sC2int

#define sC2int (   i)    ((i) - OFFSET_sC)

◆ SET_OPCODE

#define SET_OPCODE (   i,
 
)
值:
((i) = (((i)&MASK0(SIZE_OP,POS_OP)) | \

◆ setarg

#define setarg (   i,
  v,
  pos,
  size 
)
值:
((i) = (((i)&MASK0(size,pos)) | \
((cast(Instruction, v)<<pos)&MASK1(size,pos))))

◆ SETARG_A

#define SETARG_A (   i,
 
)    setarg(i, v, POS_A, SIZE_A)

◆ SETARG_Ax

#define SETARG_Ax (   i,
 
)    setarg(i, v, POS_Ax, SIZE_Ax)

◆ SETARG_B

#define SETARG_B (   i,
 
)    setarg(i, v, POS_B, SIZE_B)

◆ SETARG_Bx

#define SETARG_Bx (   i,
 
)    setarg(i, v, POS_Bx, SIZE_Bx)

◆ SETARG_C

#define SETARG_C (   i,
 
)    setarg(i, v, POS_C, SIZE_C)

◆ SETARG_k

#define SETARG_k (   i,
 
)    setarg(i, v, POS_k, 1)

◆ SETARG_sBx

#define SETARG_sBx (   i,
 
)    SETARG_Bx((i),cast_uint((b)+OFFSET_sBx))

◆ SETARG_sJ

#define SETARG_sJ (   i,
 
)    setarg(i, cast_uint((j)+OFFSET_sJ), POS_sJ, SIZE_sJ)

◆ SIZE_A

#define SIZE_A   8

◆ SIZE_Ax

#define SIZE_Ax   (SIZE_Bx + SIZE_A)

◆ SIZE_B

#define SIZE_B   8

◆ SIZE_Bx

#define SIZE_Bx   (SIZE_C + SIZE_B + 1)

◆ SIZE_C

#define SIZE_C   8

◆ SIZE_OP

#define SIZE_OP   7

◆ SIZE_sJ

#define SIZE_sJ   (SIZE_Bx + SIZE_A)

◆ testAMode

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

◆ TESTARG_k

#define TESTARG_k (   i)    check_exp(checkopm(i, iABC), (cast_int(((i) & (1u << POS_k)))))

◆ testITMode

#define testITMode (   m)    (luaP_opmodes[m] & (1 << 5))

◆ testMMMode

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

◆ testOTMode

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

◆ testTMode

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

枚举类型说明

◆ OpCode

enum OpCode
枚举值
OP_MOVE 
OP_LOADI 
OP_LOADF 
OP_LOADK 
OP_LOADKX 
OP_LOADFALSE 
OP_LFALSESKIP 
OP_LOADTRUE 
OP_LOADNIL 
OP_GETUPVAL 
OP_SETUPVAL 
OP_GETTABUP 
OP_GETTABLE 
OP_GETI 
OP_GETFIELD 
OP_SETTABUP 
OP_SETTABLE 
OP_SETI 
OP_SETFIELD 
OP_NEWTABLE 
OP_SELF 
OP_ADDI 
OP_ADDK 
OP_SUBK 
OP_MULK 
OP_MODK 
OP_POWK 
OP_DIVK 
OP_IDIVK 
OP_BANDK 
OP_BORK 
OP_BXORK 
OP_SHRI 
OP_SHLI 
OP_ADD 
OP_SUB 
OP_MUL 
OP_MOD 
OP_POW 
OP_DIV 
OP_IDIV 
OP_BAND 
OP_BOR 
OP_BXOR 
OP_SHL 
OP_SHR 
OP_MMBIN 
OP_MMBINI 
OP_MMBINK 
OP_UNM 
OP_BNOT 
OP_NOT 
OP_LEN 
OP_CONCAT 
OP_CLOSE 
OP_TBC 
OP_JMP 
OP_EQ 
OP_LT 
OP_LE 
OP_EQK 
OP_EQI 
OP_LTI 
OP_LEI 
OP_GTI 
OP_GEI 
OP_TEST 
OP_TESTSET 
OP_CALL 
OP_TAILCALL 
OP_RETURN 
OP_RETURN0 
OP_RETURN1 
OP_FORLOOP 
OP_FORPREP 
OP_TFORPREP 
OP_TFORCALL 
OP_TFORLOOP 
OP_SETLIST 
OP_CLOSURE 
OP_VARARG 
OP_VARARGPREP 
OP_EXTRAARG 

◆ OpMode

enum OpMode
枚举值
iABC 
iABx 
iAsBx 
iAx 
isJ 
MASK1
#define MASK1(n, p)
Definition: lopcodes.h:105
POS_k
#define POS_k
Definition: lopcodes.h:50
POS_B
#define POS_B
Definition: lopcodes.h:51
cast
#define cast(t, exp)
Definition: llimits.h:123
POS_A
#define POS_A
Definition: lopcodes.h:49
OP_TAILCALL
@ OP_TAILCALL
Definition: lopcodes.h:286
POS_sJ
#define POS_sJ
Definition: lopcodes.h:58
POS_OP
#define POS_OP
Definition: lopcodes.h:47
testOTMode
#define testOTMode(m)
Definition: lopcodes.h:374
POS_Ax
#define POS_Ax
Definition: lopcodes.h:56
POS_C
#define POS_C
Definition: lopcodes.h:52
SIZE_OP
#define SIZE_OP
Definition: lopcodes.h:45
MASK0
#define MASK0(n, p)
Definition: lopcodes.h:108
POS_Bx
#define POS_Bx
Definition: lopcodes.h:54
Instruction
l_uint32 Instruction
Definition: llimits.h:194
GET_OPCODE
#define GET_OPCODE(i)
Definition: lopcodes.h:114
GETARG_C
#define GETARG_C(i)
Definition: lopcodes.h:132