1 /******************************************************************************
2 *
3 * Copyright (C) 2006, The Gentee Group. All rights reserved.
4 * This file is part of the Gentee open source project - http://www.gentee.com.
5 *
6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT").
7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS
8 * ACCEPTANCE OF THE AGREEMENT.
9 *
10 * ID: bytecode 18.10.06 0.0.A.
11 *
12 * Author: Alexey Krivonogov ( gentee )
13 *
14 * Summary: The byte-code structures, defines and enums
15 *
16 ******************************************************************************/
17
18 /*-----------------------------------------------------------------------------
19 *
20 * ID: shifttype 19.10.06 0.0.A.
21 *
22 * Summary: The shift type of the embedded commands. Hi - top shift Lo - cmd
23 shift
24 *
25 -----------------------------------------------------------------------------*/
26
27 enum
28 {
29 // SH_TYPE, // type
30 // top cmd
31 SHN3_1 = 1, // -3 1
32 SHN2_1, // -2 1
33 SHN1_2, // -1 2
34 SHN1_1, // -1 1
35 SH0_2, // 0 2
36 SH0_1, // 0 1
37 SH1_3, // 1 3
38 SH1_2, // 1 2
39 SH1_1, // 1 1
40 SH2_1, // 2 1
41 SH2_3, // 2 3
42 };
43
44 /*enum
45 {
46
47 SMulII,
48 SDivII,
49 SModII,
50 SLeftII,
51 SRightII,
52 SSignI,
53 SLessII,
54 SGreaterII,
55
56 SMulI, // *=
57 SDivI, // /=
58 SModI, // %=
59 SLeftI, // <<=
60 SRightI, // >>=
61
62 SAddULUL,
63 SSubULUL,
64 SMulULUL,
65 SDivULUL,
66 SModULUL,
67 SAndULUL,
68 SOrULUL,
69 SXorULUL,
70 SLeftULUL,
71 SRightULUL,
72 SLessULUL,
73 SGreaterULUL,
74 SEqULUL,
75 SNotUL,
76
77 SIncLeftUL, // ++
78 SIncRightUL, // правый ++
79 SDecLeftUL, // --
80 SDecRightUL, // правый --
81 SAddUL, // +=
82 SSubUL, // -=
83 SMulUL, // *=
84 SDivUL, // /=
85 SModUL, // %=
86 SAndUL, // &=
87 SOrUL, // |=
88 SXorUL, // ^=
89 SLeftUL, // <<=
90 SRightUL, // >>=
91
92 SMulLL,
93 SDivLL,
94 SModLL,
95 SLeftLL,
96 SRightLL,
97 SSignL,
98 SLessLL,
99 SGreaterLL,
100
101 SMulL, // *=
102 SDivL, // /=
103 SModL, // %=
104 SLeftL, // <<=
105 SRightL, // >>=
106
107 SAddFF,
108 SSubFF,
109 SMulFF,
110 SDivFF,
111 SSignF,
112 SLessFF,
113 SGreaterFF,
114 SEqFF,
115
116 SIncLeftF, // ++
117 SIncRightF, // правый ++
118 SDecLeftF, // --
119 SDecRightF, // правый --
120 SAddF,
121 SSubF,
122 SMulF,
123 SDivF,
124
125 SAddDD,
126 SSubDD,
127 SMulDD,
128 SDivDD,
129 SSignD,
130 SLessDD,
131 SGreaterDD,
132 SEqDD,
133
134 SIncLeftD, // ++
135 SIncRightD, // правый ++
136 SDecLeftD, // --
137 SDecRightD, // правый --
138 SAddD,
139 SSubD,
140 SMulD,
141 SDivD,
142
143 SIncLeftB, // ++
144 SIncRightB, // правый ++
145 SDecLeftB, // --
146 SDecRightB, // правый --
147 SAddB, // +=
148 SSubB, // -=
149 SMulB, // *=
150 SDivB, // /=
151 SModB, // %=
152 SAndB, // &=
153 SOrB, // |=
154 SXorB, // ^=
155 SLeftB, // <<=
156 SRightB, // >>=
157
158 SMulBS, // *=
159 SDivBS, // /=
160 SModBS, // %=
161 SLeftBS, // <<=
162 SRightBS, // >>=
163
164 SIncLeftUS, // ++
165 SIncRightUS, // правый ++
166 SDecLeftUS, // --
167 SDecRightUS, // правый --
168 SAddUS, // +=
169 SSubUS, // -=
170 SMulUS, // *=
171 SDivUS, // /=
172 SModUS, // %=
173 SAndUS, // &=
174 SOrUS, // |=
175 SXorUS, // ^=
176 SLeftUS, // <<=
177 SRightUS, // >>=
178
179 SMulS, // *=
180 SDivS, // /=
181 SModS, // %=
182 SLeftS, // <<=
183 SRightS, // >>=
184
185 // Команды конвертации
186 Sd2f,
187 Sd2i,
188 Sd2l,
189 Sf2d,
190 Sf2i,
191 Sf2l,
192 Si2d,
193 Si2f,
194 Si2l,
195 Sl2d,
196 Sl2f,
197 Sl2i,
198 Sui2d,
199 Sui2f,
200 Sui2l,
201 // Sul2d,
202 // Sul2f,
203 // Sul2i,
204
205 SSizeof, // Размер типа
206 SArgsCount, // Возвратить количество параметров
207 SArgsGet, // Получить i-й параметр
208 SGetText, // Получить текущий вывод
209 SGetID, // Получение ID по имени
210 SGetIDCall, // Получение ID по имени и параметрам
211 SGetVM, // Получить идентификатор виртуальной машины
212
213 SNop, // Метка - Пустая команда
214 SVarsInit, // Инициализациия блока переменных cmd 1 - номер блока
215 SSubCall, // Вызов локальной функции. cmd 1 - координаты для goto.
216 SSubRet, // определить количество возвращаемых dword cmd 1
217 SSubPar, // Определить параметры у подфункции. cmd 1 - номер блока
218 // переменных-параметров для данной подфункции.
219 // cmd 2 - количество копируемых dword
220 SSubReturn, // Выход из подфункции
221 SPtrGlobal, // Получить указатель на глобальную переменную cmd 1 - идентифкатор переменной
222 SCmdLoad, // Идентифкатор поместить в стэк. При загрузке конвертируется в SDwLoad
223 SCmdCall, // Вызов функции по коду из стэка cmd 1 - количетсво dword занимаемых параметрами.
224 // код вызова находится перед ними
225 // SSizeof, // Размер типа
226 // SArgsCount, // Возвратить количество параметров
227 // SArgsGet, // Получить i-й параметр
228 // SGetVM, // Получить идентификатор виртуальной машины
229 STypeInit, // Инициализировать переменную указатель и id типа
230 STypeMustInit,// Данный тип имеет функции инициализации или деинициализации 0 init /1 deinit + id типа
231 STypeMustDel, // Данный тип имеет функции инициализации или деинициализации 0 init /1 deinit + id типа
232 STypeDelete, // Освободить переменную указатель и id типа
233 // SGetText, // Получить текущий вывод
234 SSetTextPtr, // Вывод текста по SPtrDataSize
235 SSetTextClear,// Вывод текста по str и очищение str
236 SSetText, // Вывод текста по str
237 SCollectAdd, // Добавить значения к коллекции cmd - 1 - dword количество dwords в стэке на описание
238 // добавляемых элементов
239 // В стэке val1 ... vali + < количество dwords под val( byte ) + type of val (3 байт) >
240 SException, // Добавить функцию обработки исключения
241 SThrow, // Генерация исключения
242 SCallFunc,
243 SCallStd,
244 SReturn, // Выход из функции
245
246 // Базовые типы
247 SByteSign, // Не менять положение типов!
248 SByte,
249 SShort,
250 SUShort,
251 SInt,
252 SUInt,
253 SFloat,
254 SLong, // 64-разрядные типы
255 SULong,
256 SDouble,
257 SBuf,
258 SStr,
259 SCollection, // Тип коллекция
260 SReserved, // Тип для резервирования места
261 // SCollection, // Тип коллекция
262 SLast,
263
264 SPtrStr = 253, // Следом идет строка в тексте
265 }
266 */