aboutsummaryrefslogtreecommitdiff
path: root/opcode.h
diff options
context:
space:
mode:
Diffstat (limited to 'opcode.h')
-rw-r--r--opcode.h167
1 files changed, 0 insertions, 167 deletions
diff --git a/opcode.h b/opcode.h
deleted file mode 100644
index 406ff971..00000000
--- a/opcode.h
+++ /dev/null
@@ -1,167 +0,0 @@
1/*
2** TeCGraf - PUC-Rio
3** $Id: opcode.h,v 3.37 1997/07/30 22:00:50 roberto Exp roberto $
4*/
5
6#ifndef opcode_h
7#define opcode_h
8
9#include "lua.h"
10#include "types.h"
11#include "tree.h"
12#include "func.h"
13
14
15#define FIELDS_PER_FLUSH 40
16
17/*
18* WARNING: if you change the order of this enumeration,
19* grep "ORDER LUA_T"
20*/
21typedef enum
22{
23 LUA_T_NIL = -9,
24 LUA_T_NUMBER = -8,
25 LUA_T_STRING = -7,
26 LUA_T_ARRAY = -6, /* array==table */
27 LUA_T_FUNCTION = -5,
28 LUA_T_CFUNCTION= -4,
29 LUA_T_MARK = -3,
30 LUA_T_CMARK = -2,
31 LUA_T_LINE = -1,
32 LUA_T_USERDATA = 0
33} lua_Type;
34
35#define NUM_TYPES 10
36
37
38extern char *luaI_typenames[];
39
40typedef enum {
41/* name parm before after side effect
42-----------------------------------------------------------------------------*/
43
44PUSHNIL,/* - nil */
45PUSH0,/* - 0.0 */
46PUSH1,/* - 1.0 */
47PUSH2,/* - 2.0 */
48PUSHBYTE,/* b - (float)b */
49PUSHWORD,/* w - (float)w */
50PUSHLOCAL0,/* - LOC[0] */
51PUSHLOCAL1,/* - LOC[1] */
52PUSHLOCAL2,/* - LOC[2] */
53PUSHLOCAL3,/* - LOC[3] */
54PUSHLOCAL4,/* - LOC[4] */
55PUSHLOCAL5,/* - LOC[5] */
56PUSHLOCAL6,/* - LOC[6] */
57PUSHLOCAL7,/* - LOC[7] */
58PUSHLOCAL8,/* - LOC[8] */
59PUSHLOCAL9,/* - LOC[9] */
60PUSHLOCAL,/* b - LOC[b] */
61PUSHGLOBAL,/* w - VAR[w] */
62PUSHINDEXED,/* i t t[i] */
63PUSHSELF,/* w t t t[CNST[w]] */
64STORELOCAL0,/* x - LOC[0]=x */
65STORELOCAL1,/* x - LOC[1]=x */
66STORELOCAL2,/* x - LOC[2]=x */
67STORELOCAL3,/* x - LOC[3]=x */
68STORELOCAL4,/* x - LOC[4]=x */
69STORELOCAL5,/* x - LOC[5]=x */
70STORELOCAL6,/* x - LOC[6]=x */
71STORELOCAL7,/* x - LOC[7]=x */
72STORELOCAL8,/* x - LOC[8]=x */
73STORELOCAL9,/* x - LOC[9]=x */
74STORELOCAL,/* b x - LOC[b]=x */
75STOREGLOBAL,/* w x - VAR[w]=x */
76STOREINDEXED0,/* v i t - t[i]=v */
77STOREINDEXED,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */
78STORELIST0,/* b v_b...v_1 t - t[i]=v_i */
79STORELIST,/* b c v_b...v_1 t - t[i+c*FPF]=v_i */
80STORERECORD,/* b
81 w_b...w_1 v_b...v_1 t - t[CNST[w_i]]=v_i */
82ADJUST0,/* - - TOP=BASE */
83ADJUST,/* b - - TOP=BASE+b */
84CREATEARRAY,/* w - newarray(size = w) */
85EQOP,/* y x (x==y)? 1 : nil */
86LTOP,/* y x (x<y)? 1 : nil */
87LEOP,/* y x (x<y)? 1 : nil */
88GTOP,/* y x (x>y)? 1 : nil */
89GEOP,/* y x (x>=y)? 1 : nil */
90ADDOP,/* y x x+y */
91SUBOP,/* y x x-y */
92MULTOP,/* y x x*y */
93DIVOP,/* y x x/y */
94POWOP,/* y x x^y */
95CONCOP,/* y x x..y */
96MINUSOP,/* x -x */
97NOTOP,/* x (x==nil)? 1 : nil */
98ONTJMP,/* w x (x!=nil)? x : - (x!=nil)? PC+=w */
99ONFJMP,/* w x (x==nil)? x : - (x==nil)? PC+=w */
100JMP,/* w - - PC+=w */
101UPJMP,/* w - - PC-=w */
102IFFJMP,/* w x - (x==nil)? PC+=w */
103IFFUPJMP,/* w x - (x==nil)? PC-=w */
104CALLFUNC,/* b c v_b...v_1 f r_c...r_1 f(v1,...,v_b) */
105RETCODE0,
106RETCODE,/* b - - */
107SETLINE,/* w - - LINE=w */
108VARARGS,/* b v_b...v_1 {v_1...v_b;n=b} */
109STOREMAP,/* b v_b k_b ...v_1 k_1 t - t[k_i]=v_i */
110PUSHCONSTANTB,/*b - CNST[b] */
111PUSHCONSTANT,/* w - CNST[w] */
112ENDCODE = 127
113} OpCode;
114
115
116#define MULT_RET 255
117
118
119typedef union
120{
121 lua_CFunction f;
122 real n;
123 TaggedString *ts;
124 TFunc *tf;
125 struct Hash *a;
126 int i;
127} Value;
128
129typedef struct TObject
130{
131 lua_Type ttype;
132 Value value;
133} TObject;
134
135
136/* Macros to access structure members */
137#define ttype(o) ((o)->ttype)
138#define nvalue(o) ((o)->value.n)
139#define svalue(o) ((o)->value.ts->str)
140#define tsvalue(o) ((o)->value.ts)
141#define avalue(o) ((o)->value.a)
142#define fvalue(o) ((o)->value.f)
143
144/* Macros to access symbol table */
145#define s_object(i) (lua_table[i].object)
146#define s_ttype(i) (ttype(&s_object(i)))
147#define s_nvalue(i) (nvalue(&s_object(i)))
148#define s_svalue(i) (svalue(&s_object(i)))
149#define s_tsvalue(i) (tsvalue(&s_object(i)))
150#define s_avalue(i) (avalue(&s_object(i)))
151#define s_fvalue(i) (fvalue(&s_object(i)))
152#define s_uvalue(i) (uvalue(&s_object(i)))
153
154
155/* Exported functions */
156void lua_parse (TFunc *tf); /* from "lua.stx" module */
157void luaI_codedebugline (int line); /* from "lua.stx" module */
158void lua_travstack (int (*fn)(TObject *));
159TObject *luaI_Address (lua_Object o);
160void luaI_pushobject (TObject *o);
161void luaI_gcIM (TObject *o);
162int luaI_dorun (TFunc *tf);
163int lua_domain (void);
164
165extern TObject luaI_errorim;
166
167#endif