EnglishРусский  

   ..

   vm.c

   vm.h

   vm-a.h

   vmload.c

   vmload.h

   vmres.c

   vmres.h

   vmrun.c

   vmrun.h

   vmrun-a.c

   vmtype.c

   vmtype.h

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

source\src\vm\vmrun.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: vrun 18.10.06 0.0.A.
11 *
12 * Author: Alexey Krivonogov ( gentee )
13 *
14 * Summary: Execute the function.
15 * 
16 ******************************************************************************/
17 
18 #ifndef _VMRUN_
19 #define _VMRUN_
20 
21    #ifdef __cplusplus               
22       extern "C" {                 
23    #endif // __cplusplus      
24 
25 #include "vm.h"
26 
27 #pragma pack(push, 1)
28 // Структура для хранения состояния вызовов функций (команд)
29 typedef struct
30 {
31    puint       start;  // Смещение начала стэка функции. стэк функции начинается 
32                        // с параметров и после окончания работы там должен быть 
33                        // возвращаемый элемент
34    puint       cmd;    // указатель на текущую команду в теле функции
35    puint       top;    // указатель на вершину стэка - первый свободный элемент
36    uint        uiret;  // Сколько возвращает dword
37    pvmfunc     func;   // Текущая функция виртуальной машины
38    puint       clmark; // Метка до которой очищается стэк. Обычно равна start + predesc
39                        // Отличается от этого значения у локальных функций.
40    uint        nline;  // The latest line in debug mode
41 } stackpos, * pstackpos;
42 #pragma pack(pop)
43 
44 // Тип стэковой функции
45 typedef void ( STDCALL* stackfunc )( pstackpos );
46 
47 
48 #define  BCODE(x)  (( povmbcode )x->func)
49 
50 //--------------------------------------------------------------------------
51 
52 void  STDCALL pseudo_i( pstackpos curpos );
53 void  STDCALL pseudo_ul( pstackpos curpos );
54 void  STDCALL pseudo_pul( pstackpos curpos );
55 void  STDCALL pseudo_l( pstackpos curpos );
56 void  STDCALL pseudo_pl( pstackpos curpos );
57 void  STDCALL pseudo_f( pstackpos curpos );
58 void  STDCALL pseudo_pf( pstackpos curpos );
59 void  STDCALL pseudo_d( pstackpos curpos );
60 void  STDCALL pseudo_pd( pstackpos curpos );
61 void  STDCALL pseudo_ui( pstackpos curpos );
62 void  STDCALL pseudo_collectadd( pstackpos curpos );
63 uint  STDCALL vm_run( uint id, puint params, puint result, uint stacksize );
64 uint  STDCALL vm_runone( uint id, uint first );
65 uint  STDCALL vm_runtwo( uint id, uint first, uint second );
66 uint  STDCALL vm_calladdr( void );
67 
68    #ifdef __cplusplus              
69       }                            
70    #endif // __cplusplus
71 
72 #endif // _VMRUN_
73 
74 
Редактировать