|
|
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.