Changeset 276 in dev for trunk/abdev/BasicCompiler_Common/PESchedule.cpp
- Timestamp:
- Aug 12, 2007, 1:25:20 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler_Common/PESchedule.cpp
r266 r276 131 131 } 132 132 } 133 134 135 136 137 //////////////////////////138 // 一般スケジュール139 //////////////////////////140 141 CSchedule::CSchedule(){142 pObpValues=(int *)HeapAlloc(hHeap,0,1);143 num=0;144 145 this->flag=0;146 }147 CSchedule::~CSchedule(){148 HeapDefaultFree(pObpValues);149 }150 void CSchedule::SetFlag(int flag){151 this->flag=flag;152 }153 void CSchedule::add(){154 pObpValues=(int *)HeapReAlloc(hHeap,0,pObpValues,(num+1)*sizeof(int));155 extern int obp;156 pObpValues[num]=obp;157 num++;158 159 if(flag&SCHEDULE_FLAG_RELOC){160 //リロケーション情報を追加する161 pobj_Reloc->AddSchedule_CodeSection(obp);162 }163 }164 void CSchedule::move(int iStartPos,int iSize,int offset){165 int i;166 for(i=0;i<num;i++){167 if(iStartPos<=pObpValues[i] && pObpValues[i]<iStartPos+iSize){168 pObpValues[i]+=offset;169 }170 }171 }172 173 //データテーブルスケジュール174 CSchedule *pobj_DataTableSchedule;175 176 //グローバル変数アドレススケジュール177 CSchedule *pobj_GlobalVarSchedule;178 179 180 181 /////////////////////////////////////////182 // インポート アドレス スケジューリング183 /////////////////////////////////////////184 185 CImportAddrSchedule::CImportAddrSchedule(){186 ppdi=(const DllProc **)HeapAlloc(hHeap,0,1);187 }188 CImportAddrSchedule::~CImportAddrSchedule(){189 HeapDefaultFree(ppdi);190 }191 192 void CImportAddrSchedule::add(const DllProc *pDllProc){193 ppdi=(const DllProc **)HeapReAlloc(hHeap,0,ppdi,(num+1)*sizeof(DllProc *));194 ppdi[num]=pDllProc;195 196 CSchedule::add();197 }198 199 CImportAddrSchedule *pobj_ImportAddrSchedule;200 201 202 203 204 /////////////////////////////////////////205 // プロシージャ アドレス スケジューリング206 /////////////////////////////////////////207 208 CSubAddrSchedule::CSubAddrSchedule(){209 ppsi=(const UserProc **)HeapAlloc(hHeap,0,1);210 pbCall=(BOOL *)HeapAlloc(hHeap,0,1);211 }212 CSubAddrSchedule::~CSubAddrSchedule(){213 HeapDefaultFree(ppsi);214 HeapDefaultFree(pbCall);215 }216 217 void CSubAddrSchedule::add(const UserProc *pUserProc,BOOL bCall){218 if(!pUserProc) return;219 220 ppsi=(const UserProc **)HeapReAlloc(hHeap,0,ppsi,(num+1)*sizeof(UserProc *));221 ppsi[num]=pUserProc;222 pbCall=(BOOL *)HeapReAlloc(hHeap,0,pbCall,(num+1)*sizeof(BOOL));223 pbCall[num]=bCall;224 225 CSchedule::add();226 227 if(!bCall){228 //リロケーション情報を追加する229 extern int obp;230 pobj_Reloc->AddSchedule_CodeSection(obp);231 }232 }233 234 CSubAddrSchedule *pobj_SubAddrSchedule;
Note:
See TracChangeset
for help on using the changeset viewer.