aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--opcode.h129
1 files changed, 76 insertions, 53 deletions
diff --git a/opcode.h b/opcode.h
index b689d6da..b59f5701 100644
--- a/opcode.h
+++ b/opcode.h
@@ -1,6 +1,6 @@
1/* 1/*
2** TeCGraf - PUC-Rio 2** TeCGraf - PUC-Rio
3** $Id: opcode.h,v 3.21 1996/05/28 21:07:32 roberto Exp roberto $ 3** $Id: opcode.h,v 3.22 1996/09/24 21:46:44 roberto Exp roberto $
4*/ 4*/
5 5
6#ifndef opcode_h 6#ifndef opcode_h
@@ -15,60 +15,83 @@
15#define FIELDS_PER_FLUSH 40 15#define FIELDS_PER_FLUSH 40
16 16
17 17
18typedef enum 18typedef enum {
19{ 19/* name parm before after side effect
20 PUSHNIL, 20-----------------------------------------------------------------------------*/
21 PUSH0, PUSH1, PUSH2, 21
22 PUSHBYTE, 22PUSHNIL,/* - nil */
23 PUSHWORD, 23PUSH0,/* - 0.0 */
24 PUSHFLOAT, 24PUSH1,/* - 1.0 */
25 PUSHSTRING, 25PUSH2,/* - 2.0 */
26 PUSHFUNCTION, 26PUSHBYTE,/* b - (float)b */
27 PUSHLOCAL0, PUSHLOCAL1, PUSHLOCAL2, PUSHLOCAL3, PUSHLOCAL4, 27PUSHWORD,/* w - (float)w */
28 PUSHLOCAL5, PUSHLOCAL6, PUSHLOCAL7, PUSHLOCAL8, PUSHLOCAL9, 28PUSHFLOAT,/* f - f */
29 PUSHLOCAL, 29PUSHSTRING,/* w - STR[w] */
30 PUSHGLOBAL, 30PUSHFUNCTION,/* p - FUN(p) */
31 PUSHINDEXED, 31PUSHLOCAL0,/* - LOC[0] */
32 PUSHSELF, 32PUSHLOCAL1,/* - LOC[1] */
33 STORELOCAL0, STORELOCAL1, STORELOCAL2, STORELOCAL3, STORELOCAL4, 33PUSHLOCAL2,/* - LOC[2] */
34 STORELOCAL5, STORELOCAL6, STORELOCAL7, STORELOCAL8, STORELOCAL9, 34PUSHLOCAL3,/* - LOC[3] */
35 STORELOCAL, 35PUSHLOCAL4,/* - LOC[4] */
36 STOREGLOBAL, 36PUSHLOCAL5,/* - LOC[5] */
37 STOREINDEXED0, 37PUSHLOCAL6,/* - LOC[6] */
38 STOREINDEXED, 38PUSHLOCAL7,/* - LOC[7] */
39 STORELIST0, 39PUSHLOCAL8,/* - LOC[8] */
40 STORELIST, 40PUSHLOCAL9,/* - LOC[9] */
41 STORERECORD, 41PUSHLOCAL,/* w - LOC[w] */
42 ADJUST0, 42PUSHGLOBAL,/* w - VAR[w] */
43 ADJUST, 43PUSHINDEXED,/* i t t[i] */
44 CREATEARRAY, 44PUSHSELF,/* w t t t[STR[w]] */
45 EQOP, 45STORELOCAL0,/* x - LOC[0]=x */
46 LTOP, 46STORELOCAL1,/* x - LOC[1]=x */
47 LEOP, 47STORELOCAL2,/* x - LOC[2]=x */
48 GTOP, 48STORELOCAL3,/* x - LOC[3]=x */
49 GEOP, 49STORELOCAL4,/* x - LOC[4]=x */
50 ADDOP, 50STORELOCAL5,/* x - LOC[5]=x */
51 SUBOP, 51STORELOCAL6,/* x - LOC[6]=x */
52 MULTOP, 52STORELOCAL7,/* x - LOC[7]=x */
53 DIVOP, 53STORELOCAL8,/* x - LOC[8]=x */
54 POWOP, 54STORELOCAL9,/* x - LOC[9]=x */
55 CONCOP, 55STORELOCAL,/* w x - LOC[w]=x */
56 MINUSOP, 56STOREGLOBAL,/* w x - VAR[w]=x */
57 NOTOP, 57STOREINDEXED0,/* v i t - t[i]=v */
58 ONTJMP, 58STOREINDEXED,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */
59 ONFJMP, 59STORELIST0,/* w v_w...v_1 t - t[i]=v_i */
60 JMP, 60STORELIST,/* w n v_w...v_1 t - t[i+n*FPF]=v_i */
61 UPJMP, 61STORERECORD,/* n
62 IFFJMP, 62 w_n...w_1 v_n...v_1 t - t[STR[w_i]]=v_i */
63 IFFUPJMP, 63ADJUST0,/* - - TOP=BASE */
64 POP, 64ADJUST,/* b - - TOP=BASE+b */
65 CALLFUNC, 65CREATEARRAY,/* w - newarray(size = w) */
66 RETCODE0, 66EQOP,/* y x (x==y)? 1 : nil */
67 RETCODE, 67LTOP,/* y x (x<y)? 1 : nil */
68 SETLINE, 68LEOP,/* y x (x<y)? 1 : nil */
69 VARARGS 69GTOP,/* y x (x>y)? 1 : nil */
70GEOP,/* y x (x>=y)? 1 : nil */
71ADDOP,/* y x x+y */
72SUBOP,/* y x x-y */
73MULTOP,/* y x x*y */
74DIVOP,/* y x x/y */
75POWOP,/* y x x^y */
76CONCOP,/* y x x..y */
77MINUSOP,/* x -x */
78NOTOP,/* x (x==nil)? 1 : nil */
79ONTJMP,/* w x - (x!=nil)? PC+=w */
80ONFJMP,/* w x - (x==nil)? PC+=w */
81JMP,/* w - - PC+=w */
82UPJMP,/* w - - PC-=w */
83IFFJMP,/* w x - (x==nil)? PC+=w */
84IFFUPJMP,/* w x - (x==nil)? PC-=w */
85POP,/* x - */
86CALLFUNC,/* n m v_n...v_1 f r_m...r_1 f(v1,...,v_n) */
87RETCODE0,
88RETCODE,/* b - - */
89SETLINE,/* w - - LINE=w */
90VARARGS/* b v_n...v_1 {v_1...v_n;n=n} */
91
70} OpCode; 92} OpCode;
71 93
94
72#define MULT_RET 255 95#define MULT_RET 255
73 96
74 97