2 ** $Id: lcode.h,v 1.58 2011/08/30 16:26:41 roberto Exp $
3 ** Code generator for Lua
4 ** See Copyright Notice in lua.h
17 ** Marks the end of a patch list. It is an invalid value both as an absolute
18 ** address, and as a list link (would link an element to itself).
24 ** grep "ORDER OPR" if you change these enums (ORDER OP)
27 OPR_ADD
, OPR_SUB
, OPR_MUL
, OPR_DIV
, OPR_MOD
, OPR_POW
,
29 OPR_EQ
, OPR_LT
, OPR_LE
,
30 OPR_NE
, OPR_GT
, OPR_GE
,
36 typedef enum UnOpr
{ OPR_MINUS
, OPR_NOT
, OPR_LEN
, OPR_NOUNOPR
} UnOpr
;
39 #define getcode(fs,e) ((fs)->f->code[(e)->u.info])
41 #define luaK_codeAsBx(fs,o,A,sBx) luaK_codeABx(fs,o,A,(sBx)+MAXARG_sBx)
43 #define luaK_setmultret(fs,e) luaK_setreturns(fs, e, LUA_MULTRET)
45 #define luaK_jumpto(fs,t) luaK_patchlist(fs, luaK_jump(fs), t)
47 LUAI_FUNC
int luaK_codeABx (FuncState
*fs
, OpCode o
, int A
, unsigned int Bx
);
48 LUAI_FUNC
int luaK_codeABC (FuncState
*fs
, OpCode o
, int A
, int B
, int C
);
49 LUAI_FUNC
int luaK_codek (FuncState
*fs
, int reg
, int k
);
50 LUAI_FUNC
void luaK_fixline (FuncState
*fs
, int line
);
51 LUAI_FUNC
void luaK_nil (FuncState
*fs
, int from
, int n
);
52 LUAI_FUNC
void luaK_reserveregs (FuncState
*fs
, int n
);
53 LUAI_FUNC
void luaK_checkstack (FuncState
*fs
, int n
);
54 LUAI_FUNC
int luaK_stringK (FuncState
*fs
, TString
*s
);
55 LUAI_FUNC
int luaK_numberK (FuncState
*fs
, lua_Number r
);
56 LUAI_FUNC
void luaK_dischargevars (FuncState
*fs
, expdesc
*e
);
57 LUAI_FUNC
int luaK_exp2anyreg (FuncState
*fs
, expdesc
*e
);
58 LUAI_FUNC
void luaK_exp2anyregup (FuncState
*fs
, expdesc
*e
);
59 LUAI_FUNC
void luaK_exp2nextreg (FuncState
*fs
, expdesc
*e
);
60 LUAI_FUNC
void luaK_exp2val (FuncState
*fs
, expdesc
*e
);
61 LUAI_FUNC
int luaK_exp2RK (FuncState
*fs
, expdesc
*e
);
62 LUAI_FUNC
void luaK_self (FuncState
*fs
, expdesc
*e
, expdesc
*key
);
63 LUAI_FUNC
void luaK_indexed (FuncState
*fs
, expdesc
*t
, expdesc
*k
);
64 LUAI_FUNC
void luaK_goiftrue (FuncState
*fs
, expdesc
*e
);
65 LUAI_FUNC
void luaK_goiffalse (FuncState
*fs
, expdesc
*e
);
66 LUAI_FUNC
void luaK_storevar (FuncState
*fs
, expdesc
*var
, expdesc
*e
);
67 LUAI_FUNC
void luaK_setreturns (FuncState
*fs
, expdesc
*e
, int nresults
);
68 LUAI_FUNC
void luaK_setoneret (FuncState
*fs
, expdesc
*e
);
69 LUAI_FUNC
int luaK_jump (FuncState
*fs
);
70 LUAI_FUNC
void luaK_ret (FuncState
*fs
, int first
, int nret
);
71 LUAI_FUNC
void luaK_patchlist (FuncState
*fs
, int list
, int target
);
72 LUAI_FUNC
void luaK_patchtohere (FuncState
*fs
, int list
);
73 LUAI_FUNC
void luaK_patchclose (FuncState
*fs
, int list
, int level
);
74 LUAI_FUNC
void luaK_concat (FuncState
*fs
, int *l1
, int l2
);
75 LUAI_FUNC
int luaK_getlabel (FuncState
*fs
);
76 LUAI_FUNC
void luaK_prefix (FuncState
*fs
, UnOpr op
, expdesc
*v
, int line
);
77 LUAI_FUNC
void luaK_infix (FuncState
*fs
, BinOpr op
, expdesc
*v
);
78 LUAI_FUNC
void luaK_posfix (FuncState
*fs
, BinOpr op
, expdesc
*v1
,
79 expdesc
*v2
, int line
);
80 LUAI_FUNC
void luaK_setlist (FuncState
*fs
, int base
, int nelems
, int tostore
);