Changeset 259 in dev


Ignore:
Timestamp:
Aug 3, 2007, 3:24:22 AM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/Compile_Object.cpp

    r253 r259  
    1616    //をセットしておかなければならない
    1717
    18     //jnzのジャンプ先番地
     18/*  //jnzのジャンプ先番地
    1919    extern int obp;
    20     int jnz_back = obp;
     20    int jnz_back = obp;*/
    2121
    2222    if(bSomeObjects){
     
    2424
    2525        //push ebx
    26         compiler.codeGenerator.op_push(REG_EBX);
     26        //compiler.codeGenerator.op_push(REG_EBX);
    2727    }
    2828
     
    7878
    7979    if(bSomeObjects){
     80        /*
    8081        //pop ebx
    8182        compiler.codeGenerator.op_pop(REG_EBX);
     
    8990        //jne ↑
    9091        compiler.codeGenerator.op_jne( jnz_back-obp, sizeof(long), false, true );
     92        */
    9193    }
    9294}
     
    261263
    262264    //jnzの番地
    263     extern int obp;
    264     int jnz_back = obp;
     265    /*extern int obp;
     266    int jnz_back = obp;*/
    265267
    266268    //push ecx
     
    289291
    290292    //jne ↑
    291     compiler.codeGenerator.op_jne( jnz_back-obp, sizeof(long), false, true );
     293    //compiler.codeGenerator.op_jne( jnz_back-obp, sizeof(long), false, true );
    292294
    293295
  • trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp

    r256 r259  
    264264
    265265    extern int obp;
    266     pUserProc->SetBeginOpAddress( obp );
     266    pUserProc->_beginOpAddressOld = obp;
    267267
    268268    //コンパイル中の関数が属するクラス
     
    294294        SystemProc(*pUserProc);
    295295
    296         pUserProc->SetEndOpAddress( obp );
     296        pUserProc->_endOpAddressOld = obp;
    297297        return;
    298298    }
     
    737737
    738738
    739     pUserProc->SetEndOpAddress( obp );
     739    pUserProc->_endOpAddressOld = obp;
    740740
    741741
  • trunk/abdev/BasicCompiler32/MakePeHdr.cpp

    r258 r259  
    554554    vector<ObjectModule *> masterObjectModules;
    555555    masterObjectModules.push_back( &compiler.objectModule );
    556     //compiler.linker.Link( masterObjectModules );
     556    compiler.linker.Link( masterObjectModules );
    557557
    558558
     
    704704
    705705            if( pUserProc->GetName() == "DllMain" ){
    706                 DllMain_EntryPoint=pUserProc->GetBeginOpAddress();
     706                DllMain_EntryPoint=pUserProc->_beginOpAddressOld;
    707707            }
    708708
    709709            lpdwExportAddressTable=(DWORD *)HeapReAlloc(hHeap,0,lpdwExportAddressTable,(ExportNum+1)*sizeof(DWORD));
    710             lpdwExportAddressTable[ExportNum]=pUserProc->GetBeginOpAddress();
     710            lpdwExportAddressTable[ExportNum]=pUserProc->_beginOpAddressOld;
    711711
    712712            lpdwExportNamePointerTable=(DWORD *)HeapReAlloc(hHeap,0,lpdwExportNamePointerTable,(ExportNum+1)*sizeof(DWORD));
     
    11771177    // プロシージャポインタスケジュール
    11781178    for(i=0;i<pobj_SubAddrSchedule->num;i++){
    1179         if(pobj_SubAddrSchedule->ppsi[i]->GetBeginOpAddress()==0
    1180             &&pobj_SubAddrSchedule->ppsi[i]->GetEndOpAddress()==0){
     1179        if(pobj_SubAddrSchedule->ppsi[i]->_beginOpAddressOld==0
     1180            &&pobj_SubAddrSchedule->ppsi[i]->_endOpAddressOld==0){
    11811181            SetError(300,NULL,-1);
    11821182        }
     
    11841184        if(pobj_SubAddrSchedule->pbCall[i]){
    11851185            *((long *)(OpBuffer+pobj_SubAddrSchedule->pObpValues[i]))=
    1186                 pobj_SubAddrSchedule->ppsi[i]->GetBeginOpAddress()-(pobj_SubAddrSchedule->pObpValues[i]+sizeof(long));
     1186                pobj_SubAddrSchedule->ppsi[i]->_beginOpAddressOld-(pobj_SubAddrSchedule->pObpValues[i]+sizeof(long));
    11871187        }
    11881188        else{
    11891189            *((long *)(OpBuffer+pobj_SubAddrSchedule->pObpValues[i]))=
    1190                 pobj_SubAddrSchedule->ppsi[i]->GetBeginOpAddress()+ImageBase+MemPos_CodeSection;
     1190                pobj_SubAddrSchedule->ppsi[i]->_beginOpAddressOld+ImageBase+MemPos_CodeSection;
    11911191        }
    11921192    }
  • trunk/abdev/BasicCompiler32/NumOpe.cpp

    r256 r259  
    677677    //リテラル値のみの計算かどうかを判別するためのフラグ
    678678    BOOL bLiteralCalculation=1;
    679 
    680     //リテラル演算の場合を考慮した演算前のバッファ位置
    681     extern int obp;
    682     int BeforeObp = obp;
    683679
    684680    //リテラル演算の場合を考慮した演算前のプロシージャスケジュール位置
  • trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp

    r257 r259  
    184184    else bDebugSupportProc=0;
    185185
    186     pUserProc->SetBeginOpAddress( obp );
     186    pUserProc->_beginOpAddressOld = obp;
    187187
    188188    //コンパイル中の関数が属するクラス
     
    222222        pobj_sf=0;
    223223
    224         pUserProc->SetEndOpAddress( obp );
     224        pUserProc->_endOpAddressOld = obp;
    225225        return;
    226226    }
  • trunk/abdev/BasicCompiler64/MakePeHdr.cpp

    r257 r259  
    624624
    625625            if( pUserProc->GetName() == "DllMain" ){
    626                 DllMain_EntryPoint=pUserProc->GetBeginOpAddress();
     626                DllMain_EntryPoint=pUserProc->_beginOpAddressOld;
    627627            }
    628628
    629629            lpdwExportAddressTable=(DWORD *)HeapReAlloc(hHeap,0,lpdwExportAddressTable,(ExportNum+1)*sizeof(DWORD));
    630             lpdwExportAddressTable[ExportNum]=pUserProc->GetBeginOpAddress();
     630            lpdwExportAddressTable[ExportNum]=pUserProc->_beginOpAddressOld;
    631631
    632632            lpdwExportNamePointerTable=(DWORD *)HeapReAlloc(hHeap,0,lpdwExportNamePointerTable,(ExportNum+1)*sizeof(DWORD));
     
    11251125    // プロシージャポインタスケジュール
    11261126    for(i=0;i<pobj_SubAddrSchedule->num;i++){
    1127         if(pobj_SubAddrSchedule->ppsi[i]->GetBeginOpAddress()==0
    1128             &&pobj_SubAddrSchedule->ppsi[i]->GetEndOpAddress()==0){
     1127        if(pobj_SubAddrSchedule->ppsi[i]->_beginOpAddressOld==0
     1128            &&pobj_SubAddrSchedule->ppsi[i]->_endOpAddressOld==0){
    11291129            SetError(300,NULL,-1);
    11301130        }
     
    11321132        if(pobj_SubAddrSchedule->pbCall[i]){
    11331133            *((long *)(OpBuffer+pobj_SubAddrSchedule->pObpValues[i]))=
    1134                 pobj_SubAddrSchedule->ppsi[i]->GetBeginOpAddress()-(pobj_SubAddrSchedule->pObpValues[i]+sizeof(long));
     1134                pobj_SubAddrSchedule->ppsi[i]->_beginOpAddressOld-(pobj_SubAddrSchedule->pObpValues[i]+sizeof(long));
    11351135        }
    11361136        else{
    11371137            *((long *)(OpBuffer+pobj_SubAddrSchedule->pObpValues[i]))=
    1138                 pobj_SubAddrSchedule->ppsi[i]->GetBeginOpAddress()+ImageBase+MemPos_CodeSection;
     1138                pobj_SubAddrSchedule->ppsi[i]->_beginOpAddressOld+ImageBase+MemPos_CodeSection;
    11391139        }
    11401140    }
  • trunk/abdev/BasicCompiler_Common/Debug.cpp

    r256 r259  
    235235        UserProc *pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
    236236
    237         if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pos  &&
    238             pos < rva_to_real(pUserProc->GetEndOpAddress()))
     237        if(rva_to_real(pUserProc->_beginOpAddressOld) <= pos  &&
     238            pos < rva_to_real(pUserProc->_endOpAddressOld))
    239239        {
    240240            return pUserProc;
     
    694694                        extern const UserProc *pSub_DebugSys_EndProc;
    695695                        if((BYTE)temporary[0]==0xE8&&
    696                             *((long *)(temporary+1))+5==(long)rva_to_real(pSub_DebugSys_EndProc->GetBeginOpAddress())-(long)EIP_RIP(Context)){
     696                            *((long *)(temporary+1))+5==(long)rva_to_real(pSub_DebugSys_EndProc->_beginOpAddressOld)-(long)EIP_RIP(Context)){
    697697                            //プロシージャの終端位置の場合はステップインを行う
    698698                            goto StepIn;
     
    715715                            //シングルステップON
    716716                            WriteProcessMemory(hDebugProcess,
    717                                 (void *)rva_to_real(pUserProc->GetBeginOpAddress()),
    718                                 pobj_DBDebugSection->pobj_now->SingleStepCodeBuffer+pUserProc->GetBeginOpAddress(),
    719                                 pUserProc->GetEndOpAddress()-pUserProc->GetBeginOpAddress(),
     717                                (void *)rva_to_real(pUserProc->_beginOpAddressOld),
     718                                pobj_DBDebugSection->pobj_now->SingleStepCodeBuffer+pUserProc->_beginOpAddressOld,
     719                                pUserProc->_endOpAddressOld-pUserProc->_beginOpAddressOld,
    720720                                &lpAccBytes);
    721721                        }
  • trunk/abdev/BasicCompiler_Common/DebugMiddleFile.cpp

    r256 r259  
    236236        i2+=lstrlen(buffer+i2)+1;
    237237
    238         *(long *)(buffer+i2)=pUserProc->GetBeginOpAddress();
    239         i2+=sizeof(long);
    240         *(long *)(buffer+i2)=pUserProc->GetEndOpAddress();
     238        *(long *)(buffer+i2)=pUserProc->_beginOpAddressOld;
     239        i2+=sizeof(long);
     240        *(long *)(buffer+i2)=pUserProc->_endOpAddressOld;
    241241        i2+=sizeof(long);
    242242
     
    620620        pUserProc->SetParentClass( pClass );
    621621
    622         pUserProc->SetBeginOpAddress( *(long *)(buffer+i2) );
    623         i2+=sizeof(long);
    624         pUserProc->SetEndOpAddress( *(long *)(buffer+i2) );
     622        pUserProc->_beginOpAddressOld = *(long *)(buffer+i2);
     623        i2+=sizeof(long);
     624        pUserProc->_endOpAddressOld = *(long *)(buffer+i2);
    625625        i2+=sizeof(long);
    626626
  • trunk/abdev/BasicCompiler_Common/VarList.cpp

    r256 r259  
    362362    {
    363363        pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
    364         if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2]  &&
    365             pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->GetEndOpAddress())){
     364        if(rva_to_real(pUserProc->_beginOpAddressOld) <= pobj_dti->lplpObp[i2]  &&
     365            pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->_endOpAddressOld)){
    366366            break;
    367367        }
     
    610610            pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
    611611
    612             if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2]  &&
    613                 pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->GetEndOpAddress()))
     612            if(rva_to_real(pUserProc->_beginOpAddressOld) <= pobj_dti->lplpObp[i2]  &&
     613                pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->_endOpAddressOld))
    614614            {
    615615                lstrcpy(temporary,pUserProc->GetName().c_str());
     
    723723            pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
    724724
    725             if(rva_to_real(pUserProc->GetBeginOpAddress()) <= pobj_dti->lplpObp[i2]  &&
    726                 pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->GetEndOpAddress())){
     725            if(rva_to_real(pUserProc->_beginOpAddressOld) <= pobj_dti->lplpObp[i2]  &&
     726                pobj_dti->lplpObp[i2] < rva_to_real(pUserProc->_endOpAddressOld)){
    727727                break;
    728728            }
  • trunk/abdev/BasicCompiler_Common/include/Procedure.h

    r257 r259  
    375375        return *pCompilingUserProc;
    376376    }
     377
     378
     379
     380    mutable long _beginOpAddressOld;
     381    mutable long _endOpAddressOld;
    377382};
    378383
  • trunk/abdev/BasicCompiler_Common/src/Class.cpp

    r256 r259  
    737737        pUserProc=(UserProc *)pVtbl[i];
    738738        if(!pUserProc) continue;
    739         pVtbl[i]=pUserProc->GetBeginOpAddress()+ImageBase+MemPos_CodeSection;
     739        pVtbl[i]=pUserProc->_beginOpAddressOld+ImageBase+MemPos_CodeSection;
    740740    }
    741741}
Note: See TracChangeset for help on using the changeset viewer.