2812
+ − 1
/*
+ − 2
** $Id: lcode.h,v 1.48.1.1 2007/12/27 13:02:25 roberto Exp $
+ − 3
** Code generator for Lua
+ − 4
** See Copyright Notice in lua.h
+ − 5
*/
+ − 6
+ − 7
#ifndef lcode_h
+ − 8
#define lcode_h
+ − 9
+ − 10
#include "llex.h"
+ − 11
#include "lobject.h"
+ − 12
#include "lopcodes.h"
+ − 13
#include "lparser.h"
+ − 14
+ − 15
+ − 16
/*
+ − 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).
+ − 19
*/
+ − 20
#define NO_JUMP (-1)
+ − 21
+ − 22
+ − 23
/*
+ − 24
** grep "ORDER OPR" if you change these enums
+ − 25
*/
+ − 26
typedef enum BinOpr {
+ − 27
OPR_ADD, OPR_SUB, OPR_MUL, OPR_DIV, OPR_MOD, OPR_POW,
+ − 28
OPR_CONCAT,
+ − 29
OPR_NE, OPR_EQ,
+ − 30
OPR_LT, OPR_LE, OPR_GT, OPR_GE,
+ − 31
OPR_AND, OPR_OR,
+ − 32
OPR_NOBINOPR
+ − 33
} BinOpr;
+ − 34
+ − 35
+ − 36
typedef enum UnOpr { OPR_MINUS, OPR_NOT, OPR_LEN, OPR_NOUNOPR } UnOpr;
+ − 37
+ − 38
10017
+ − 39
#define getcode(fs,e) ((fs)->f->code[(e)->u.s.info])
2812
+ − 40
10017
+ − 41
#define luaK_codeAsBx(fs,o,A,sBx) luaK_codeABx(fs,o,A,(sBx)+MAXARG_sBx)
2812
+ − 42
10017
+ − 43
#define luaK_setmultret(fs,e) luaK_setreturns(fs, e, LUA_MULTRET)
2812
+ − 44
+ − 45
LUAI_FUNC int luaK_codeABx (FuncState *fs, OpCode o, int A, unsigned int Bx);
+ − 46
LUAI_FUNC int luaK_codeABC (FuncState *fs, OpCode o, int A, int B, int C);
+ − 47
LUAI_FUNC void luaK_fixline (FuncState *fs, int line);
+ − 48
LUAI_FUNC void luaK_nil (FuncState *fs, int from, int n);
+ − 49
LUAI_FUNC void luaK_reserveregs (FuncState *fs, int n);
+ − 50
LUAI_FUNC void luaK_checkstack (FuncState *fs, int n);
+ − 51
LUAI_FUNC int luaK_stringK (FuncState *fs, TString *s);
+ − 52
LUAI_FUNC int luaK_numberK (FuncState *fs, lua_Number r);
+ − 53
LUAI_FUNC void luaK_dischargevars (FuncState *fs, expdesc *e);
+ − 54
LUAI_FUNC int luaK_exp2anyreg (FuncState *fs, expdesc *e);
+ − 55
LUAI_FUNC void luaK_exp2nextreg (FuncState *fs, expdesc *e);
+ − 56
LUAI_FUNC void luaK_exp2val (FuncState *fs, expdesc *e);
+ − 57
LUAI_FUNC int luaK_exp2RK (FuncState *fs, expdesc *e);
+ − 58
LUAI_FUNC void luaK_self (FuncState *fs, expdesc *e, expdesc *key);
+ − 59
LUAI_FUNC void luaK_indexed (FuncState *fs, expdesc *t, expdesc *k);
+ − 60
LUAI_FUNC void luaK_goiftrue (FuncState *fs, expdesc *e);
+ − 61
LUAI_FUNC void luaK_storevar (FuncState *fs, expdesc *var, expdesc *e);
+ − 62
LUAI_FUNC void luaK_setreturns (FuncState *fs, expdesc *e, int nresults);
+ − 63
LUAI_FUNC void luaK_setoneret (FuncState *fs, expdesc *e);
+ − 64
LUAI_FUNC int luaK_jump (FuncState *fs);
+ − 65
LUAI_FUNC void luaK_ret (FuncState *fs, int first, int nret);
+ − 66
LUAI_FUNC void luaK_patchlist (FuncState *fs, int list, int target);
+ − 67
LUAI_FUNC void luaK_patchtohere (FuncState *fs, int list);
+ − 68
LUAI_FUNC void luaK_concat (FuncState *fs, int *l1, int l2);
+ − 69
LUAI_FUNC int luaK_getlabel (FuncState *fs);
+ − 70
LUAI_FUNC void luaK_prefix (FuncState *fs, UnOpr op, expdesc *v);
+ − 71
LUAI_FUNC void luaK_infix (FuncState *fs, BinOpr op, expdesc *v);
+ − 72
LUAI_FUNC void luaK_posfix (FuncState *fs, BinOpr op, expdesc *v1, expdesc *v2);
+ − 73
LUAI_FUNC void luaK_setlist (FuncState *fs, int base, int nelems, int tostore);
+ − 74
+ − 75
+ − 76
#endif