source: dev/trunk/abdev/BasicCompiler_Common/PESchedule.h@ 239

Last change on this file since 239 was 223, checked in by dai_9181, 17 years ago
File size: 2.2 KB
Line 
1#pragma once
2
3
4class UserProc;
5class DllProc;
6
7
8///////////////////////
9// リロケーション情報
10///////////////////////
11class CReloc{
12public:
13 char *buffer;
14 int length;
15 DWORD NowPageRVAToReloc;
16 DWORD NowCountAddrToReloc;
17
18 CReloc();
19 ~CReloc();
20 void AllFree(void);
21 void copy(CReloc *por);
22
23private:
24 std::vector<DWORD> codeSectionAddresses;
25public:
26 void AddSchedule_CodeSection(DWORD addr);
27
28private:
29 std::vector<DWORD> dataSectionAddresses;
30public:
31 void AddSchedule_DataSection(DWORD addr);
32
33private:
34 void __add(DWORD addr);
35public:
36 void ResetRelocBuffer(void);
37};
38extern CReloc *pobj_Reloc;
39
40
41//////////////////////////
42// 一般スケジューリング
43//////////////////////////
44#define SCHEDULE_FLAG_RELOC 1
45class CSchedule{
46 int flag;
47public:
48 int *pObpValues;
49 int num;
50
51 CSchedule();
52 ~CSchedule();
53 void SetFlag(int flag);
54
55 void add();
56 void move(int iStartPos,int iSize,int offset);
57};
58extern CSchedule *pobj_DataTableSchedule;
59extern CSchedule *pobj_GlobalVarSchedule;
60
61
62
63/////////////////////////////////////////
64// インポート アドレス スケジューリング
65/////////////////////////////////////////
66class CImportAddrSchedule:public CSchedule{
67public:
68 const DllProc **ppdi;
69
70 CImportAddrSchedule();
71 ~CImportAddrSchedule();
72
73 void add(const DllProc *pDllProc);
74};
75extern CImportAddrSchedule *pobj_ImportAddrSchedule;
76
77
78
79/////////////////////////////////////////
80// プロシージャ アドレス スケジューリング
81/////////////////////////////////////////
82class CSubAddrSchedule:public CSchedule{
83public:
84 const UserProc **ppsi;
85 BOOL *pbCall;
86
87 CSubAddrSchedule();
88 ~CSubAddrSchedule();
89
90 void add(const UserProc *pUserProc,BOOL bCall);
91};
92extern CSubAddrSchedule *pobj_SubAddrSchedule;
93
94
95
96/////////////////////////////////////
97// 一時スケジューリングポインタ
98/////////////////////////////////////
99class CTempSchedule{
100 int **ppObpValues;
101 int num;
102public:
103 CTempSchedule();
104 ~CTempSchedule();
105
106 void lock(int *pobp);
107 void unlock();
108 void move(int iStartPos,int iSize,int offset);
109};
110extern CTempSchedule *pobj_TempSchedule;
111
112
113void NativeBuffer_StaticRelocation(int iStartPos,int iSize,int offset);
Note: See TracBrowser for help on using the repository browser.