Ignore:
Timestamp:
Aug 12, 2007, 1:25:20 AM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/PESchedule.cpp

    r266 r276  
    131131    }
    132132}
    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.