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

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