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

Last change on this file since 242 was 242, checked in by dai_9181, 17 years ago
File size: 1.8 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
96void NativeBuffer_StaticRelocation(int iStartPos,int iSize,int offset);
Note: See TracBrowser for help on using the repository browser.