1 /* $NetBSD: lcode.h,v 1.3 2015/02/02 14:03:05 lneto Exp $ */
4 ** Id: lcode.h,v 1.63 2013/12/30 20:47:58 roberto Exp
5 ** Code generator for Lua
6 ** See Copyright Notice in lua.h
19 ** Marks the end of a patch list. It is an invalid value both as an absolute
20 ** address, and as a list link (would link an element to itself).
26 ** grep "ORDER OPR" if you change these enums (ORDER OP)
30 OPR_ADD
, OPR_SUB
, OPR_MUL
, OPR_MOD
, OPR_POW
,
33 OPR_ADD
, OPR_SUB
, OPR_MUL
, OPR_MOD
,
36 OPR_BAND
, OPR_BOR
, OPR_BXOR
,
39 OPR_EQ
, OPR_LT
, OPR_LE
,
40 OPR_NE
, OPR_GT
, OPR_GE
,
46 typedef enum UnOpr
{ OPR_MINUS
, OPR_BNOT
, OPR_NOT
, OPR_LEN
, OPR_NOUNOPR
} UnOpr
;
49 #define getcode(fs,e) ((fs)->f->code[(e)->u.info])
51 #define luaK_codeAsBx(fs,o,A,sBx) luaK_codeABx(fs,o,A,(sBx)+MAXARG_sBx)
53 #define luaK_setmultret(fs,e) luaK_setreturns(fs, e, LUA_MULTRET)
55 #define luaK_jumpto(fs,t) luaK_patchlist(fs, luaK_jump(fs), t)
57 LUAI_FUNC
int luaK_codeABx (FuncState
*fs
, OpCode o
, int A
, unsigned int Bx
);
58 LUAI_FUNC
int luaK_codeABC (FuncState
*fs
, OpCode o
, int A
, int B
, int C
);
59 LUAI_FUNC
int luaK_codek (FuncState
*fs
, int reg
, int k
);
60 LUAI_FUNC
void luaK_fixline (FuncState
*fs
, int line
);
61 LUAI_FUNC
void luaK_nil (FuncState
*fs
, int from
, int n
);
62 LUAI_FUNC
void luaK_reserveregs (FuncState
*fs
, int n
);
63 LUAI_FUNC
void luaK_checkstack (FuncState
*fs
, int n
);
64 LUAI_FUNC
int luaK_stringK (FuncState
*fs
, TString
*s
);
65 LUAI_FUNC
int luaK_intK (FuncState
*fs
, lua_Integer n
);
66 LUAI_FUNC
void luaK_dischargevars (FuncState
*fs
, expdesc
*e
);
67 LUAI_FUNC
int luaK_exp2anyreg (FuncState
*fs
, expdesc
*e
);
68 LUAI_FUNC
void luaK_exp2anyregup (FuncState
*fs
, expdesc
*e
);
69 LUAI_FUNC
void luaK_exp2nextreg (FuncState
*fs
, expdesc
*e
);
70 LUAI_FUNC
void luaK_exp2val (FuncState
*fs
, expdesc
*e
);
71 LUAI_FUNC
int luaK_exp2RK (FuncState
*fs
, expdesc
*e
);
72 LUAI_FUNC
void luaK_self (FuncState
*fs
, expdesc
*e
, expdesc
*key
);
73 LUAI_FUNC
void luaK_indexed (FuncState
*fs
, expdesc
*t
, expdesc
*k
);
74 LUAI_FUNC
void luaK_goiftrue (FuncState
*fs
, expdesc
*e
);
75 LUAI_FUNC
void luaK_goiffalse (FuncState
*fs
, expdesc
*e
);
76 LUAI_FUNC
void luaK_storevar (FuncState
*fs
, expdesc
*var
, expdesc
*e
);
77 LUAI_FUNC
void luaK_setreturns (FuncState
*fs
, expdesc
*e
, int nresults
);
78 LUAI_FUNC
void luaK_setoneret (FuncState
*fs
, expdesc
*e
);
79 LUAI_FUNC
int luaK_jump (FuncState
*fs
);
80 LUAI_FUNC
void luaK_ret (FuncState
*fs
, int first
, int nret
);
81 LUAI_FUNC
void luaK_patchlist (FuncState
*fs
, int list
, int target
);
82 LUAI_FUNC
void luaK_patchtohere (FuncState
*fs
, int list
);
83 LUAI_FUNC
void luaK_patchclose (FuncState
*fs
, int list
, int level
);
84 LUAI_FUNC
void luaK_concat (FuncState
*fs
, int *l1
, int l2
);
85 LUAI_FUNC
int luaK_getlabel (FuncState
*fs
);
86 LUAI_FUNC
void luaK_prefix (FuncState
*fs
, UnOpr op
, expdesc
*v
, int line
);
87 LUAI_FUNC
void luaK_infix (FuncState
*fs
, BinOpr op
, expdesc
*v
);
88 LUAI_FUNC
void luaK_posfix (FuncState
*fs
, BinOpr op
, expdesc
*v1
,
89 expdesc
*v2
, int line
);
90 LUAI_FUNC
void luaK_setlist (FuncState
*fs
, int base
, int nelems
, int tostore
);