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

Last change on this file since 229 was 223, checked in by dai_9181, 17 years ago
File size: 2.2 KB
RevLine 
[182]1#pragma once
[34]2
3
[206]4class UserProc;
5class DllProc;
6
7
[34]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:
[223]24 std::vector<DWORD> codeSectionAddresses;
[34]25public:
26 void AddSchedule_CodeSection(DWORD addr);
27
28private:
[223]29 std::vector<DWORD> dataSectionAddresses;
[34]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:
[206]68 const DllProc **ppdi;
[34]69
70 CImportAddrSchedule();
71 ~CImportAddrSchedule();
72
[206]73 void add(const DllProc *pDllProc);
[34]74};
75extern CImportAddrSchedule *pobj_ImportAddrSchedule;
76
77
78
79/////////////////////////////////////////
80// プロシージャ アドレス スケジューリング
81/////////////////////////////////////////
82class CSubAddrSchedule:public CSchedule{
83public:
[206]84 const UserProc **ppsi;
[34]85 BOOL *pbCall;
86
87 CSubAddrSchedule();
88 ~CSubAddrSchedule();
89
[206]90 void add(const UserProc *pUserProc,BOOL bCall);
[34]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.