Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1846 | yogev_ezra | 1 | //===== Глобальные константы |
2 | #define STD_INPUT_HANDLE -10 |
||
3 | #define STD_OUTPUT_HANDLE -11 |
||
4 | #define STD_ERROR_HANDLE -12 |
||
5 | #define CREATE_NEW 1 |
||
6 | #define CREATE_ALWAYS 2 |
||
7 | #define OPEN_EXISTING 3 |
||
8 | #define OPEN_ALWAYS 4 |
||
9 | #define TRUNCATE_EXISTING 5 |
||
10 | // ---- |
||
11 | #define GENERIC_READ 0x80000000 |
||
12 | #define GENERIC_WRITE 0x40000000 |
||
13 | #define GENERIC_EXECUTE 0x20000000 |
||
14 | #define GENERIC_ALL 0x10000000 |
||
15 | // ---- Константы компилятора |
||
16 | #define _END 0x1B |
||
17 | #define FILENAMESIZE 80 |
||
18 | #define IDLENGTH 65 // Длина имени идентификатора, включая NULL-терминатор |
||
19 | #define MAXDATA 512000 // Размер буферов под код и данные |
||
20 | #define MAXDBGS 50000 // Размер буферов под отладочну информацию |
||
21 | #define MAXDLLS 100 |
||
22 | #define MAXINPUT 512000 // Максимальны размер входного файла |
||
23 | #define MAXMDL 100 // Максимальное число includes |
||
24 | #define MAXPOSTS 150000 // Размер буферов под POST обработку |
||
25 | #define NULL 0 |
||
26 | #define SORTSIZE 20 |
||
27 | #define STRLEN 1000 // Длина буфера под token |
||
28 | // ------------------------------------------ |
||
29 | //===== Нумерованные константы |
||
30 | // ---- Коды возврата |
||
31 | enum{ e_ok, e_outofmemory, e_cannotopeninput, e_toomanyerrors, |
||
32 | e_internalerror, e_noinputspecified, e_unknowncommandline, |
||
33 | e_extract, e_cannotopenmapfile, e_someerrors }; |
||
34 | // ---- Коды tokens tk_xxxx |
||
35 | enum{ |
||
36 | tk_eof,tk_number,tk_string,tk_var, |
||
37 | tk_id, |
||
38 | tk_db,tk_dw,tk_dd,tk_dq, // Типы переменных |
||
39 | tk_byte,tk_char,tk_word,tk_short, |
||
40 | tk_dword,tk_int, |
||
41 | tk_enum, // Нумерованные константы |
||
42 | tk_struc, // Определение структуры |
||
43 | tk_if,tk_else,tk_endif, // Условная компиляция |
||
44 | tk_include,tk_define, // Включение фа ла//Определение константы |
||
45 | tk_import, // Импорт из DLL |
||
46 | tk_map, // Генерация MAP-файла |
||
47 | tk_debug, // Генерация отладочной информации |
||
48 | tk_list, // Выдача ASM-листинга |
||
49 | tk_dll, // Генерация DLL-файла |
||
50 | tk_loop,tk_return,tk_do, |
||
51 | tk_while,tk_void, |
||
52 | tk_continue,tk_break, |
||
53 | tk_docase,tk_case,tk_default, |
||
54 | tk_carryflag,tk_extract,tk_FALSE,tk_from, |
||
55 | tk_notcarryflag,tk_notoverflow,tk_overflow,tk_TRUE, |
||
56 | tk_zeroflag,tk_notzeroflag, |
||
57 | tk_assign,tk_swap, |
||
58 | tk_minus,tk_plus, |
||
59 | tk_minusminus,tk_plusplus,tk_mult,tk_div,tk_mod, |
||
60 | tk_multminus,tk_divminus,tk_modminus,tk_rr,tk_ll, |
||
61 | tk_rrminus, |
||
62 | tk_llminus, |
||
63 | tk_minusequals,tk_plusequals,tk_rrequals,tk_llequals, |
||
64 | tk_or,tk_and,tk_xor,tk_not, |
||
65 | tk_orminus, |
||
66 | tk_andminus,tk_xorminus, |
||
67 | tk_orequals,tk_andequals,tk_xorequals, |
||
68 | tk_equalto, |
||
69 | tk_notequal,tk_greater,tk_greaterequal,tk_less, |
||
70 | tk_lessequal, |
||
71 | tk_oror,tk_andand,tk_openbrace,tk_closebrace, |
||
72 | tk_openbracket,tk_closebracket,tk_openblock,tk_closeblock, |
||
73 | tk_colon,tk_semicolon,tk_comma,tk_period, |
||
74 | tk_dollar,tk_question,tk_tilda, |
||
75 | tk_reg,tk_controlreg,tk_debugreg,tk_testreg,tk_seg, |
||
76 | tk_undefproc,tk_proc, |
||
77 | tk_postnumber, |
||
78 | tk_local,tk_locallabel,tk_param,tk_locnumber, |
||
79 | tk_DLL,tk_API,tk_directive,tk_command,tk_mnemonics, |
||
80 | tokens |
||
81 | }; |
||
82 | // ---- Кодировка типа процедур |
||
83 | enum{ cpt_near, cpt_far }; |
||
84 | // ---- Кодировка POST записей |
||
85 | enum { POST_CALL=1, POST_API, POST_DATA, POST_LOC, POST_STR }; |
||
86 | // ---- Описание структуры в dbginfo: dbg_... |
||
87 | enum{ dbg_mod=0, // Номер модуля |
||
88 | dbg_line=4, // Номер строк в модуле |
||
89 | dbg_loc=8, // Позиция в EXE-файле |
||
90 | dbg_size=12}; // размер структуры |
||
91 | // ---- Описание структуры idrec |
||
92 | enum{ left=0, // Указатель на idrec |
||
93 | right=4, // Указатель на idrec |
||
94 | recid=8, // Имя идентификатора |
||
95 | newid=recid+4, // Указатель на алиас для recid |
||
96 | rectok=newid+4, // Номер token |
||
97 | rectype=rectok+4, // Тип token: void, byte, char, word, ... |
||
98 | recsrc=rectype+4, // Исходный текст |
||
99 | recpost=recsrc+4, // Флаг POST переменной |
||
100 | recnumber=recpost+4, // Значение или offset в recsrc |
||
101 | recmodline=recnumber+4,// Номер модуля и строки |
||
102 | recsize=recnumber+4};// размер структуры |
||
103 | // ---- Описание структуры localrec |
||
104 | enum{ localnext=0, // Указатель на следующую localrec |
||
105 | localid=4, // Имя локально переменной |
||
106 | localtok=localid+IDLENGTH,// Значение token |
||
107 | localtype=localtok+4, // тип переменной |
||
108 | localnumber=localtype+4, // Позиция в стеке |
||
109 | local_size=localnumber+4}; // Размер структуры |