EnglishРусский  

   ..

   vm.c

   vm.h

   vmload.c

   vmload.h

   vmres.c

   vmres.h

   vmrun.c

   vmrun.h

   vmtype.c

   vmtype.h

Ads

Perfect Automation tool
All-In-One: Script editor, Launcher, Scheduler, Keyboard & Mouse Recorder. Try now!

CreateInstall
Freeware and commercial installers.

Cell Phone Batteries
Batteries Plus offers batteries for laptop, camcorder, cell phone, camera.

Gentee needs your help!
How to advertise with us
 
laptop battery

source\src\vm\vmload.h
  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: vmload 18.10.06 0.0.A.
 11 *
 12 * Author: Alexey Krivonogov ( gentee )
 13 *
 14 * Summary: Load objects into VM
 15 * 
 16 ******************************************************************************/
 17 
 18 #ifndef _VMLOAD_
 19 #define _VMLOAD_
 20 
 21    #ifdef __cplusplus               
 22       extern "C" {                 
 23    #endif // __cplusplus      
 24 
 25 #include "vmrun.h"
 26 
 27 // Флаги для VAR DWORD MODE
 28 
 29 #define  VAR_NAME   0x01   // Есть имя 
 30 #define  VAR_OFTYPE 0x02   // Есть of type
 31 #define  VAR_DIM    0x04   // Есть размерность [,,,]
 32 #define  VAR_IDNAME 0x08   // For define if macro has IDNAME type
 33 // В этом случае, тип строка, но она содержит имя идентификатора
 34 #define  VAR_PARAM  0x10   // Параметр функции или подфункции
 35 #define  VAR_DATA   0x20   // Имеются данные
 36 
 37 //--------------------------------------------------------------------------
 38 /*    FULL MODE
 39 
 40 Все FULL MODE должны начинаться с 
 41 1 - byte - тип объекта OVM_*****
 42 2 - uint - флаги flags
 43 3 - BWD  - размер загружаемых данных - весь включая общие данные
 44 4 - pbyte - последовательность байт до 0 - имя объекта если есть флаг GHCOM_NAME 
 45 
 46 //--------------------------------------------------------------------------
 47 
 48 Формат описания переменной определенного типа VAR DWORD MODE 
 49 
 50 BWD - тип
 51 ubyte - [VARFLAG] флаги VAR_
 52 
 53 if [VARFLAG] & VAR_NAME
 54    pbyte - имя подтипа - последовательность байт до 0
 55 
 56 if [VARFLAG] & VAR_OFTYPE
 57    BWD - Тип - oftype 
 58 
 59 if [VARFLAG] & VAR_DIM
 60    ubyte - [DIM] - размерность
 61    for [DIM]
 62       BWD - величины размерностей
 63 
 64 if [VARFLAG] & VAR_DATA
 65    Последовательность данных. Для чисел - числа
 66    Для прочих 
 67       BWD - размер 
 68       Далее идет данные 
 69 
 70 //--------------------------------------------------------------------------
 71 
 72  Формат DWORD MODE для OVM_TYPE 
 73 
 74 if  GHTY_INHERIT
 75    BWD - Тип - родитель inherit если есть флаг GHTY_INHERIT
 76 
 77 if GHTY_INDEX
 78    BWD - Тип - index 
 79    BWD - Тип - index oftype 
 80 
 81 if GHTY_INITDEL
 82    BWD - ID - method init
 83    BWD - ID - method delete
 84 
 85 if GHTY_EXTFUNC
 86    BWD - ID - method oftype
 87    BWD - ID - method  = %{}
 88 
 89 if GHTY_ARRAY 
 90    if BWD > MAX_MSR - один метод ID array 
 91    else array[ MAX_MSR ] - методы array 
 92 
 93 BWD - [COUNT] - Количество подтипов. Если GHTY_STACK, то размер
 94 
 95 for [COUNT]
 96    Описание [VAR DWORD MODE]
 97 
 98 //--------------------------------------------------------------------------
 99 
100  Формат DWORD MODE для OVM_BYTECODE
101 
102 [VAR DWORD MODE] - тип возвращаемого значения
103 BWD - [PAR COUNT] - Количество параметров
104 
105 for [ PAR COUNT ]  
106    Описания [VAR DWORD MODE] параметров
107 
108 BWD - [SET COUNT] - Количество блоков параметров
109 
110 for [ SET COUNT ]  
111    BWD - [VAR COUNT] - Количество переменных
112 
113 for [SUMMARY VAR COUNT]
114    Описания [VAR DWORD MODE] параметров
115 
116 dwords - последовательность dword - команды байт кода
117 
118 //--------------------------------------------------------------------------
119 
120  Формат DWORD MODE для OVM_EXFUNC
121 
122 [VAR DWORD MODE] - тип возвращаемого значения
123 BWD - [PAR COUNT] - Количество параметров
124 
125 for [ PAR COUNT ]  
126    Описания [VAR DWORD MODE] параметров
127 
128 if [GHEX_IMPORT]
129    BWD - library id
130    pubyte - the original name
131 
132 //--------------------------------------------------------------------------
133 
134  Формат DWORD MODE для OVM_DEFINE
135 
136 dword [COUNT] - Количество элементов
137 for [COUNT]
138    Описание [VAR DWORD MODE]
139 
140 //--------------------------------------------------------------------------
141 
142  Формат DWORD MODE для OVM_IMPORT
143 
144 pubyte - the name of the file
145 if GHIMP_LINK
146    dword [SIZE] - the size of DLL
147    ubyte SIZE - the body of the dll
148 
149 //--------------------------------------------------------------------------
150 
151  Формат DWORD MODE для OVM_GLOBAL
152 
153 [VAR DWORD MODE] - тип переменной
154 
155 //--------------------------------------------------------------------------
156 
157  Формат DWORD MODE для OVM_ALIAS
158 
159 BWD - the id of linked object
160 
161 //--------------------------------------------------------------------------
162 
163  Формат DWORD MODE для OVM_RESOURCE
164 
165 BWD - [COUNT] - Количество строк
166 for [COUNT]
167    BWD - the id of type
168    TStr pubyte - строка 
169 */
170 
171 // Parameters for 'mode' of load_bytecode
172 #define  VMLOAD_GE      0   // Loading from GE 
173 #define  VMLOAD_G       1   // Loading from G
174 #define  VMLOAD_EXTERN  1   // Extern description
175 #define  VMLOAD_FIRST   2   // Pre-loading function
176 #define  VMLOAD_OK      3   // Loading byte-code
177 
178 uint    STDCALL load_bwd( pubyte * ptr );
179 uint    STDCALL load_convert( pubyte * ptr );
180 pvmobj  STDCALL load_addobj( uint over );
181 pvmobj  STDCALL load_stack( int top, int cmd, stackfunc pseudo );
182 pvmobj  STDCALL load_type( pubyte* input );
183 pvmobj  STDCALL load_bytecode( pubyte* input, uint mode );
184 pvmobj  STDCALL load_exfunc( pubyte* input, uint over );
185 pvmobj  STDCALL load_define( pubyte* input );
186 pvmobj  STDCALL load_import( pubyte* input );
187 pvmobj  STDCALL load_global( pubyte* input );
188 pvmobj  STDCALL load_alias( pubyte* input );
189 
190 /*
191 
192   По окончанию загрузки предворительная инициализация
193 
194   Заполняем поля GHRT_INIT GHRT_DEINIT у типов
195   Инициализируем global variables
196   выполняем entry
197   выполняем main если это необходимо
198 */
199 
200 //--------------------------------------------------------------------------
201 
202 
203    #ifdef __cplusplus              
204       }                            
205    #endif // __cplusplus
206 
207 #endif // _VMLOAD_
208 
Edit