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

Last change on this file since 206 was 206, 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 DWORD *pdwData_CodeSection;
25 int iNum_CodeSection;
26public:
27 void AddSchedule_CodeSection(DWORD addr);
28
29private:
30 DWORD *pdwData_DataSection;
31 int iNum_DataSection;
32public:
33 void AddSchedule_DataSection(DWORD addr);
34
35private:
36 void __add(DWORD addr);
37public:
38 void ResetRelocBuffer(void);
39};
40extern CReloc *pobj_Reloc;
41
42
43//////////////////////////
44// 一般スケジューリング
45//////////////////////////
46#define SCHEDULE_FLAG_RELOC 1
47class CSchedule{
48 int flag;
49public:
50 int *pObpValues;
51 int num;
52
53 CSchedule();
54 ~CSchedule();
55 void SetFlag(int flag);
56
57 void add();
58 void move(int iStartPos,int iSize,int offset);
59};
60extern CSchedule *pobj_DataTableSchedule;
61extern CSchedule *pobj_GlobalVarSchedule;
62
63
64
65/////////////////////////////////////////
66// インポート アドレス スケジューリング
67/////////////////////////////////////////
68class CImportAddrSchedule:public CSchedule{
69public:
70 const DllProc **ppdi;
71
72 CImportAddrSchedule();
73 ~CImportAddrSchedule();
74
75 void add(const DllProc *pDllProc);
76};
77extern CImportAddrSchedule *pobj_ImportAddrSchedule;
78
79
80
81/////////////////////////////////////////
82// プロシージャ アドレス スケジューリング
83/////////////////////////////////////////
84class CSubAddrSchedule:public CSchedule{
85public:
86 const UserProc **ppsi;
87 BOOL *pbCall;
88
89 CSubAddrSchedule();
90 ~CSubAddrSchedule();
91
92 void add(const UserProc *pUserProc,BOOL bCall);
93};
94extern CSubAddrSchedule *pobj_SubAddrSchedule;
95
96
97
98/////////////////////////////////////
99// 一時スケジューリングポインタ
100/////////////////////////////////////
101class CTempSchedule{
102 int **ppObpValues;
103 int num;
104public:
105 CTempSchedule();
106 ~CTempSchedule();
107
108 void lock(int *pobp);
109 void unlock();
110 void move(int iStartPos,int iSize,int offset);
111};
112extern CTempSchedule *pobj_TempSchedule;
113
114
115void NativeBuffer_StaticRelocation(int iStartPos,int iSize,int offset);
Note: See TracBrowser for help on using the repository browser.