# lua/lopcodes.h File Reference

`#include "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

const lu_byte | luaP_opmodes [(((int)(OP_VARARG))+1)]
const char *const | luaP_opnames [(((int)(OP_VARARG))+1)+1]

## Define Documentation

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

Definition at line 119 of file lopcodes.h.

#define CREATE_ABC | ( | o,
|  | a,
|  | b,
|  | c |  | ) |

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.

Referenced by luaK_codeABC(), and patchtestreg().

#define CREATE_ABx | ( | o,
|  | a,
|  | bc |  | ) |

Value:

    ((cast(Instruction, o)<<POS_OP) \
                            | (cast(Instruction, a)<<POS_A) \
                            | (cast(Instruction, bc)<<POS_Bx))

Definition at line 109 of file lopcodes.h.

Referenced by luaK_codeABx().

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

Definition at line 80 of file lopcodes.h.

Referenced by getfuncname(), getjumpcontrol(), getobjname(), invertjump(), jumponcond(), luaG_checkopenop(), luaK_nil(), luaK_posfix(), luaV_execute(), need_value(), patchtestreg(), precheck(), resume(), and symbexec().

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

Definition at line 84 of file lopcodes.h.

Referenced by getfuncname(), getobjname(), invertjump(), luaK_nil(), luaK_setoneret(), luaV_execute(), retstat(), and symbexec().

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

Definition at line 88 of file lopcodes.h.

Referenced by getobjname(), jumponcond(), luaG_checkopenop(), luaK_nil(), luaK_posfix(), luaV_execute(), patchtestreg(), and symbexec().

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

Definition at line 96 of file lopcodes.h.

Referenced by getobjname(), luaV_execute(), and symbexec().

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

Definition at line 92 of file lopcodes.h.

Referenced by getobjname(), luaV_execute(), patchtestreg(), and symbexec().

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

Definition at line 100 of file lopcodes.h.

Referenced by getjump(), luaV_execute(), and symbexec().

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

Definition at line 255 of file lopcodes.h.

Referenced by luaK_codeABC(), and symbexec().

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

Definition at line 256 of file lopcodes.h.

Referenced by luaK_codeABC(), luaK_codeABx(), and symbexec().

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

Definition at line 254 of file lopcodes.h.

Referenced by luaK_codeABC(), luaK_codeABx(), and symbexec().

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

Definition at line 125 of file lopcodes.h.

Referenced by checkArgMode(), and kname().

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

Definition at line 122 of file lopcodes.h.

Referenced by checkArgMode(), freereg(), and kname().

#define LFIELDS_PER_FLUSH 50

Definition at line 265 of file lopcodes.h.

Referenced by closelistfield(), luaK_setlist(), and luaV_execute().

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

Definition at line 74 of file lopcodes.h.

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

Definition at line 71 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_Bx MAX_INT

Definition at line 60 of file lopcodes.h.

Referenced by addk(), and pushclosure().

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

Definition at line 67 of file lopcodes.h.

Referenced by luaK_setlist().

#define MAXARG_sBx MAX_INT

Definition at line 61 of file lopcodes.h.

Referenced by fixjump().

#define MAXINDEXRK (BITRK - 1)

Definition at line 127 of file lopcodes.h.

Referenced by luaK_exp2RK().

#define NO_REG MAXARG_A

Definition at line 136 of file lopcodes.h.

Referenced by dischargejpc(), jumponcond(), luaG_checkcode(), luaK_patchlist(), patchtestreg(), removevalues(), singlevaraux(), and symbexec().

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

Definition at line 211 of file lopcodes.h.

Referenced by symbexec().

#define POS_A (POS_OP + SIZE_OP)

Definition at line 45 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 POS_C (POS_A + SIZE_A)

Definition at line 46 of file lopcodes.h.

#define POS_OP 0

Definition at line 44 of file lopcodes.h.

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

Definition at line 130 of file lopcodes.h.

Referenced by luaK_exp2RK().

#define SET_OPCODE | ( | i,
|  | o |  | ) |

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.

Referenced by retstat().

#define SETARG_A | ( | i,
|  | u |  | ) |

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.

Referenced by discharge2reg(), invertjump(), luaK_setreturns(), and patchtestreg().

#define SETARG_B | ( | i,
|  | b |  | ) |

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.

Referenced by constructor(), luaK_nil(), luaK_posfix(), luaK_setoneret(), and luaK_setreturns().

#define SETARG_Bx | ( | i,
|  | b |  | ) |

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 SETARG_C | ( | i,
|  | b |  | ) |

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.

Referenced by constructor(), exprstat(), and luaK_setreturns().

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

Definition at line 101 of file lopcodes.h.

Referenced by fixjump().

#define SIZE_A 8

Definition at line 40 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_C 9

Definition at line 37 of file lopcodes.h.

#define SIZE_OP 6

Definition at line 42 of file lopcodes.h.

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

Definition at line 257 of file lopcodes.h.

Referenced by symbexec().

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

Definition at line 258 of file lopcodes.h.

Referenced by getjumpcontrol(), invertjump(), and symbexec().

## Enumeration Type Documentation

enum OpArgMask

Enumerator:

  OpArgN |
  OpArgU |
  OpArgR |
  OpArgK |

Definition at line 245 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 OpMode

Enumerator:

  iABC |
  iABx |
  iAsBx |

Definition at line 31 of file lopcodes.h.

## Variable Documentation

const lu_byte luaP_opmodes[(((int)(OP_VARARG))+1)]

Definition at line 61 of file lopcodes.c.

const char* const luaP_opnames[(((int)(OP_VARARG))+1)+1]

Definition at line 16 of file lopcodes.c.