|
|
1.1 root 1:
2: // this file is shared by quake and qcc
3:
4: typedef int func_t;
5: typedef int string_t;
6:
7: typedef enum {ev_void, ev_string, ev_float, ev_vector, ev_entity, ev_field, ev_function, ev_pointer} etype_t;
8:
9:
10: #define OFS_NULL 0
11: #define OFS_RETURN 1
12: #define OFS_PARM0 4 // leave 3 ofs for each parm to hold vectors
13: #define OFS_PARM1 7
14: #define OFS_PARM2 10
15: #define OFS_PARM3 13
16: #define OFS_PARM4 16
17: #define OFS_PARM5 19
18: #define OFS_PARM6 22
19: #define OFS_PARM7 25
20: #define RESERVED_OFS 28
21:
22:
23: enum {
24: OP_DONE,
25: OP_MUL_F,
26: OP_MUL_V,
27: OP_MUL_FV,
28: OP_MUL_VF,
29: OP_DIV_F,
30: OP_ADD_F,
31: OP_ADD_V,
32: OP_SUB_F,
33: OP_SUB_V,
34:
35: OP_EQ_F,
36: OP_EQ_V,
37: OP_EQ_S,
38: OP_EQ_E,
39: OP_EQ_FNC,
40:
41: OP_NE_F,
42: OP_NE_V,
43: OP_NE_S,
44: OP_NE_E,
45: OP_NE_FNC,
46:
47: OP_LE,
48: OP_GE,
49: OP_LT,
50: OP_GT,
51:
52: OP_LOAD_F,
53: OP_LOAD_V,
54: OP_LOAD_S,
55: OP_LOAD_ENT,
56: OP_LOAD_FLD,
57: OP_LOAD_FNC,
58:
59: OP_ADDRESS,
60:
61: OP_STORE_F,
62: OP_STORE_V,
63: OP_STORE_S,
64: OP_STORE_ENT,
65: OP_STORE_FLD,
66: OP_STORE_FNC,
67:
68: OP_STOREP_F,
69: OP_STOREP_V,
70: OP_STOREP_S,
71: OP_STOREP_ENT,
72: OP_STOREP_FLD,
73: OP_STOREP_FNC,
74:
75: OP_RETURN,
76: OP_NOT_F,
77: OP_NOT_V,
78: OP_NOT_S,
79: OP_NOT_ENT,
80: OP_NOT_FNC,
81: OP_IF,
82: OP_IFNOT,
83: OP_CALL0,
84: OP_CALL1,
85: OP_CALL2,
86: OP_CALL3,
87: OP_CALL4,
88: OP_CALL5,
89: OP_CALL6,
90: OP_CALL7,
91: OP_CALL8,
92: OP_STATE,
93: OP_GOTO,
94: OP_AND,
95: OP_OR,
96:
97: OP_BITAND,
98: OP_BITOR
99: };
100:
101:
102: typedef struct statement_s
103: {
104: unsigned short op;
105: short a,b,c;
106: } dstatement_t;
107:
108: typedef struct
109: {
110: unsigned short type; // if DEF_SAVEGLOBGAL bit is set
111: // the variable needs to be saved in savegames
112: unsigned short ofs;
113: int s_name;
114: } ddef_t;
115: #define DEF_SAVEGLOBAL (1<<15)
116:
117: #define MAX_PARMS 8
118:
119: typedef struct
120: {
121: int first_statement; // negative numbers are builtins
122: int parm_start;
123: int locals; // total ints of parms + locals
124:
125: int profile; // runtime
126:
127: int s_name;
128: int s_file; // source file defined in
129:
130: int numparms;
131: byte parm_size[MAX_PARMS];
132: } dfunction_t;
133:
134:
135: #define PROG_VERSION 6
136: typedef struct
137: {
138: int version;
139: int crc; // check of header file
140:
141: int ofs_statements;
142: int numstatements; // statement 0 is an error
143:
144: int ofs_globaldefs;
145: int numglobaldefs;
146:
147: int ofs_fielddefs;
148: int numfielddefs;
149:
150: int ofs_functions;
151: int numfunctions; // function 0 is an empty
152:
153: int ofs_strings;
154: int numstrings; // first string is a null string
155:
156: int ofs_globals;
157: int numglobals;
158:
159: int entityfields;
160: } dprograms_t;
161:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.