source: dev/BasicCompiler_Common/PESchedule.h@ 65

Last change on this file since 65 was 34, checked in by dai_9181, 18 years ago

スコープ処理を統一した。関数の途中でReturnしても、スコープにあるローカルオブジェクトを正確に破棄できるようにした。

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