Ignore:
Timestamp:
Aug 12, 2007, 1:25:20 AM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev/BasicCompiler_Common/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/src/Class.cpp

    r272 r276  
    732732        if(!pUserProc) continue;
    733733
    734         // 古いOpBufferを利用する場合は_beginOpAddressOldでないとダメ
    735         //pVtbl[i]=pUserProc->_beginOpAddressOld+ImageBase+MemPos_CodeSection;
    736734        pVtbl[i]=pUserProc->GetBeginOpAddress()+ImageBase+MemPos_CodeSection;
    737735    }
     
    954952                member->GetConstructParameter().c_str(),
    955953                0);
    956 
    957             //ネイティブコードバッファの再確保
    958             ReallocNativeCodeBuffer();
    959954
    960955            i++;
     
    15021497        // コンパイル
    15031498        ChangeOpcode( temporary );
    1504 
    1505         // ネイティブコードバッファの再確保
    1506         ReallocNativeCodeBuffer();
    15071499    }
    15081500
     
    15501542            ChangeOpcode( temporary );
    15511543        }
    1552 
    1553         // ネイティブコードバッファの再確保
    1554         ReallocNativeCodeBuffer();
    15551544    }
    15561545
  • trunk/abdev/BasicCompiler_Common/src/CodeGenerator.cpp

    r206 r276  
    44#include <stdlib.h>
    55
    6 int obp,obp_AllocSize;
    76int GlobalOpBufferSize;
    8 char *OpBuffer;
    9 void ReallocNativeCodeBuffer(){
    10     if(obp_AllocSize<obp+8192){
    11         obp_AllocSize+=8192;
    12         OpBuffer=(char *)realloc(OpBuffer,obp_AllocSize); //matea
    13     }
    14 }
  • trunk/abdev/BasicCompiler_Common/src/CommonCodeGenerator.cpp

    r254 r276  
    99    {
    1010        pNativeCode->Overwrite( exitSubCodePosition, (long)( pNativeCode->GetSize()-(exitSubCodePosition+sizeof(long)) ) );
    11     }
    12    
    13     // TODO: 未完成
    14     BOOST_FOREACH( long exitSubCodePositionOld, _exitSubCodePositions_ObpOld )
    15     {
    16         extern int obp;
    17         pNativeCode->OverwriteOld( exitSubCodePositionOld, (long)( obp-(exitSubCodePositionOld+sizeof(long)) ) );
    1811    }
    1912}
     
    4538
    4639                pNativeCode->Overwrite( pPertialSchedule->GetCodePos(), (char)newValue );
    47 
    48                 // TODO: 未完成(用が無くなったら消す)
    49                 pNativeCode->OverwriteOld( pPertialSchedule->GetObpOld(), (char)newValue );
    5040            }
    5141            else if( pPertialSchedule->GetTypeSize() == sizeof(long) )
    5242            {
    5343                pNativeCode->Overwrite( pPertialSchedule->GetCodePos(), newValue );
    54 
    55                 // TODO: 未完成(用が無くなったら消す)
    56                 pNativeCode->OverwriteOld( pPertialSchedule->GetObpOld(), newValue );
    5744            }
    5845            else
     
    9481                    pNativeCode->GetLong(pPertialSchedule->GetCodePos()) + offset
    9582                );
    96 
    97                 // TODO: 未完成(用が無くなったら消す)
    98                 pNativeCode->OverwriteOld(
    99                     pPertialSchedule->GetObpOld(),
    100                     pNativeCode->_GetLong_ObpOld(pPertialSchedule->GetObpOld()) + offset
    101                 );
    10283            }
    10384            else
     
    136117        {
    137118            long newValue = pNativeCode->GetSize() - (pPertialSchedule->GetCodePos()+pPertialSchedule->GetTypeSize());
    138 
    139             extern int obp;
    140             long newValueOld = obp - (pPertialSchedule->GetObpOld()+pPertialSchedule->GetTypeSize());
    141119
    142120            if( pPertialSchedule->GetTypeSize() == sizeof(char) )
     
    149127
    150128                pNativeCode->Overwrite( pPertialSchedule->GetCodePos(), (char)newValue );
    151 
    152                 // TODO: 未完成(用が無くなったら消す)
    153                 pNativeCode->OverwriteOld( pPertialSchedule->GetObpOld(), (char)newValueOld );
    154129            }
    155130            else if( pPertialSchedule->GetTypeSize() == sizeof(long) )
    156131            {
    157132                pNativeCode->Overwrite( pPertialSchedule->GetCodePos(), newValue );
    158 
    159                 // TODO: 未完成(用が無くなったら消す)
    160                 pNativeCode->OverwriteOld( pPertialSchedule->GetObpOld(), newValueOld );
    161133            }
    162134            else
     
    184156{
    185157    long beginCodePos = pNativeCode->GetSize();
    186     {
    187         // TODO: 未完成
    188         extern int obp;
    189         beginCodePos = obp;
    190     }
    191158
    192159    if( opcode == (char)0xEB )
     
    233200    {
    234201        // 自分自身の命令サイズを考慮する場合
    235         //offset += ( pNativeCode->GetSize() - beginCodePos ) + op_size;
    236 
    237         // TODO: 未完成
    238         extern int obp;
    239         offset -= ( obp - beginCodePos ) + op_size;
     202        offset -= ( pNativeCode->GetSize() - beginCodePos ) + op_size;
    240203    }
    241204
     
    301264void CodeGenerator::op_jmp_continue()
    302265{
    303     ////////////////////////////////////
    304     // エラー検出(必要なくなったら消す)
    305     extern int obp;
    306     if( GetContinueCodePosOld()-obp != GetContinueCodePos()-pNativeCode->GetSize() )
    307     {
    308         int continueCodePosOld = GetContinueCodePosOld();
    309         int continueCodePos = GetContinueCodePos();
    310         int size = pNativeCode->GetSize();
    311         int test=0;
    312         SetError();
    313     }
    314     ////////////////////////////////////
    315 
    316 
    317266    if( GetContinueCodePos() == -1 )
    318267    {
     
    328277
    329278    exitSubCodePositions.push_back( pNativeCode->GetSize() );
    330    
    331     extern int obp;
    332     _exitSubCodePositions_ObpOld.push_back( obp );
    333279
    334280    pNativeCode->Put( (long)0 );
  • trunk/abdev/BasicCompiler_Common/src/LexicalScope.cpp

    r265 r276  
    7979        if(pVar->bLiving&&pVar->GetScopeLevel()==level){
    8080            pVar->bLiving=0;
    81             extern int obp;
    82             pVar->SetScopeEndAddress( obp );
     81            pVar->SetScopeEndAddress( compiler.codeGenerator.GetNativeCodeSize() );
    8382        }
    8483    }
  • trunk/abdev/BasicCompiler_Common/src/Linker.cpp

    r273 r276  
    110110    }
    111111
    112     nativeCode.Put( masterObjectModule.globalNativeCode, false );
     112    nativeCode.Put( masterObjectModule.globalNativeCode );
    113113
    114114    masterObjectModule.meta.GetUserProcs().Iterator_Reset();
     
    117117        const UserProc *pUserProc = masterObjectModule.meta.GetUserProcs().Iterator_GetNext();
    118118
    119         if( pUserProc->IsUsing() )
     119        if( pUserProc->GetNativeCode().GetSize() > 0 )
    120120        {
    121121            pUserProc->SetBeginOpAddress( nativeCode.GetSize() );
    122122
    123             nativeCode.Put( pUserProc->GetNativeCode(), false );
     123            nativeCode.Put( pUserProc->GetNativeCode() );
    124124
    125125            pUserProc->SetEndOpAddress( nativeCode.GetSize() );
  • trunk/abdev/BasicCompiler_Common/src/NativeCode.cpp

    r273 r276  
    66#define BREAK_EIP(checkEip)  (obp+0x00401000>=checkEip)
    77
    8 void ObpPlus( int step )
    9 {
    10     extern int obp;
    11     obp += step;
    12 
    13     // 例:epi=0x00401999
    14     if( BREAK_EIP(0x00433FD7) )
    15     {
    16         int test=0;
    17     }
    18 }
    19 
    20 void NativeCode::Put( const NativeCode &nativeCode, bool isOpBuffer )
     8void NativeCode::Put( const NativeCode &nativeCode )
    219{
    2210    long baseOffset = size;
    2311
    2412    // コードバッファを追加
    25     Put( nativeCode.codeBuffer, nativeCode.size, isOpBuffer );
     13    Put( nativeCode.codeBuffer, nativeCode.size );
    2614
    2715    // スケジュールを追加
     
    6452    *((long *)(codeBuffer+size))=0;
    6553    size += sizeof(long);
    66 
    67 
    68 
    69     // 未完成
    70     if( isCall )
    71     {
    72         pobj_SubAddrSchedule->add(pUserProc,1);
    73     }
    74     else
    75     {
    76         pobj_SubAddrSchedule->add(pUserProc,0);
    77     }
    78     extern char *OpBuffer;
    79     extern int obp;
    80     *((long *)(OpBuffer+obp))=0;
    81     ObpPlus( sizeof(long) );
    8254}
    8355
     
    9062    *((long *)(codeBuffer+size))=0;
    9163    size += sizeof(long);
    92 
    93 
    94 
    95     // 未完成
    96     pobj_ImportAddrSchedule->add(pDllProc);
    97     extern char *OpBuffer;
    98     extern int obp;
    99     *((long *)(OpBuffer+obp))=0;
    100     ObpPlus( sizeof(long) );
    10164}
    10265
  • trunk/abdev/BasicCompiler_Common/src/ObjectModule.cpp

    r274 r276  
    88    meta.StaticLink( objectModule.meta, dataTable.GetSize() );
    99
     10    // ネイティブコードを結合
     11    globalNativeCode.Put( objectModule.globalNativeCode );
     12    globalNativeCode.ResetDataSectionBaseOffset( dataTable.GetSize() );
     13
    1014    // データテーブルを結合
    1115    dataTable.Add( objectModule.dataTable );
Note: See TracChangeset for help on using the changeset viewer.