Ignore:
Timestamp:
Aug 6, 2007, 11:44:42 PM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

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

    r263 r265  
    146146    //////////////////
    147147    // データテーブル
    148     compiler.objectModule.dataTable.Clear();
     148    compiler.GetObjectModule().dataTable.Clear();
    149149    if(bDebugCompile){
    150         compiler.objectModule.dataTable.Add( (long)0x00000002 );
     150        compiler.GetObjectModule().dataTable.Add( (long)0x00000002 );
    151151    }
    152152
     
    172172
    173173    //関数ポインタ情報を初期化
    174     compiler.objectModule.meta.GetProcPointers().clear();
     174    compiler.GetObjectModule().meta.GetProcPointers().clear();
    175175
    176176    // 名前空間情報を取得
    177177    NamespaceSupporter::CollectNamespaces(
    178178        Smoothie::Lexical::source.GetBuffer(),
    179         compiler.objectModule.meta.GetNamespaces()
     179        compiler.GetObjectModule().meta.GetNamespaces()
    180180    );
    181181
     
    183183    //   CollectProcedures関数の中で参照されるオブジェクト名を事前に取得する。
    184184    //     ※オブジェクトの内容までは取得しない
    185     compiler.objectModule.meta.GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
     185    compiler.GetObjectModule().meta.GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
    186186
    187187    //TypeDef情報を初期化
    188     compiler.objectModule.meta.GetTypeDefs().Init();
     188    compiler.GetObjectModule().meta.GetTypeDefs().Init();
    189189
    190190    //定数情報を取得
     
    195195    CollectProcedures(
    196196        Smoothie::Lexical::source,
    197         compiler.objectModule.meta.GetUserProcs(),
    198         compiler.objectModule.meta.GetDllProcs()
     197        compiler.GetObjectModule().meta.GetUserProcs(),
     198        compiler.GetObjectModule().meta.GetDllProcs()
    199199    );
    200200
    201201    // クラス情報を取得(※注 - CollectProceduresの後に呼び出す)
    202     compiler.objectModule.meta.GetClasses().GetAllClassInfo();
     202    compiler.GetObjectModule().meta.GetClasses().GetAllClassInfo();
    203203
    204204    // サブルーチン(ユーザー定義、DLL関数)のイテレータの準備
    205     compiler.objectModule.meta.GetUserProcs().Iterator_Init();
    206     compiler.objectModule.meta.GetDllProcs().Iterator_Init();
     205    compiler.GetObjectModule().meta.GetUserProcs().Iterator_Init();
     206    compiler.GetObjectModule().meta.GetDllProcs().Iterator_Init();
    207207
    208208/*
    209     if( !compiler.objectModule.WriteXml( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) )
     209    if( !compiler.GetObjectModule().WriteXml( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) )
    210210    {
    211211        MessageBox(0,"XML書き込みに失敗","test",0);
     
    217217    }
    218218
    219     if( !compiler.objectModule.meta.WriteBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
     219    if( !compiler.GetObjectModule().meta.WriteBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
    220220    {
    221221        MessageBox(0,"バイナリ書き込みに失敗","test",0);
     
    226226        MessageBox(0,"バイナリ読み込みに失敗","test",0);
    227227    }
    228     if( !compiler.objectModule.meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
     228    if( !compiler.GetObjectModule().meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
    229229    {
    230230        MessageBox(0,"バイナリ書き込みに失敗","test",0);
     
    431431
    432432        // コード生成対象を選択
    433         compiler.codeGenerator.Select( compiler.objectModule.globalNativeCode );
     433        compiler.codeGenerator.Select( compiler.GetObjectModule().globalNativeCode );
    434434
    435435        trace_for_sourcecodestep( "★★★ グローバル領域のコンパイルを開始" );
     
    456456
    457457        //クラスに属する静的メンバを定義
    458         compiler.objectModule.meta.GetClasses().InitStaticMember();
     458        compiler.GetObjectModule().meta.GetClasses().InitStaticMember();
    459459
    460460        //グローバル実行領域をコンパイル開始
     
    542542
    543543    vector<ObjectModule *> masterObjectModules;
    544     masterObjectModules.push_back( &compiler.objectModule );
     544    masterObjectModules.push_back( &compiler.GetObjectModule() );
    545545    compiler.linker.Link( masterObjectModules );
     546
     547    oldSourceLines = compiler.linker.GetNativeCode().GetSourceLines();
    546548
    547549
     
    549551    int t,t2;
    550552    t=GetTickCount();
    551     if( !compiler.objectModule.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) )
     553    if( !compiler.GetObjectModule().WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) )
    552554    {
    553555        MessageBox(0,"XML書き込みに失敗","test",0);
    554556    }
    555     if( !compiler.objectModule.ReadText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) )
     557    if( !compiler.GetObjectModule().ReadText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) )
    556558    {
    557559        MessageBox(0,"XML読み込みに失敗","test",0);
     
    563565    MessageBox(0,s,"test",0);
    564566   
    565     if( !compiler.objectModule.meta.WriteBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
     567    if( !compiler.GetObjectModule().meta.WriteBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
    566568    {
    567569        MessageBox(0,"バイナリ書き込みに失敗","test",0);
     
    572574        MessageBox(0,"バイナリ読み込みに失敗","test",0);
    573575    }
    574     if( !compiler.objectModule.meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
     576    if( !compiler.GetObjectModule().meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
    575577    {
    576578        MessageBox(0,"バイナリ書き込みに失敗","test",0);
     
    594596    // 使用するDLL関数のチェック
    595597    ////////////////////////////////
    596     compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
    597     while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
     598    compiler.GetObjectModule().meta.GetDllProcs().Iterator_Reset();
     599    while( compiler.GetObjectModule().meta.GetDllProcs().Iterator_HasNext() )
    598600    {
    599         const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
     601        const DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().Iterator_GetNext();
    600602
    601603        if( !pDllProc->IsUsing() ){
     
    667669            //辞書順にサーチ
    668670            temporary[0]=0;
    669             compiler.objectModule.meta.GetUserProcs().Iterator_Reset();
    670             while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() )
     671            compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset();
     672            while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() )
    671673            {
    672                 pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
     674                pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext();
    673675                if(pUserProc->IsExport()){
    674676                    if(temporary[0]=='\0'){
     
    693695
    694696            if( pUserProc->GetName() == "DllMain" ){
     697                // TODO: 未完成
    695698                DllMain_EntryPoint=pUserProc->_beginOpAddressOld;
    696699            }
     
    757760    int ImportDllNum=0;
    758761
    759     compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
    760     while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
     762    compiler.GetObjectModule().meta.GetDllProcs().Iterator_Reset();
     763    while( compiler.GetObjectModule().meta.GetDllProcs().Iterator_HasNext() )
    761764    {
    762         const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
     765        const DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().Iterator_GetNext();
    763766
    764767        if( !pDllProc->IsUsing() ){
     
    797800        pImportTable[i].Name=i3+i*0x10;
    798801
    799         compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
    800         while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
     802        compiler.GetObjectModule().meta.GetDllProcs().Iterator_Reset();
     803        while( compiler.GetObjectModule().meta.GetDllProcs().Iterator_HasNext() )
    801804        {
    802             const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
     805            const DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().Iterator_GetNext();
    803806
    804807            if( !pDllProc->IsUsing() ){
     
    826829    i3+=ImportDllNum*0x10;
    827830    for(i=0,i5=0;i<ImportDllNum;i++){
    828         compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
    829         while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
     831        compiler.GetObjectModule().meta.GetDllProcs().Iterator_Reset();
     832        while( compiler.GetObjectModule().meta.GetDllProcs().Iterator_HasNext() )
    830833        {
    831             DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
     834            DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().Iterator_GetNext();
    832835
    833836            if( !pDllProc->IsUsing() ){
     
    872875    //(デバッグ情報で利用される)
    873876    extern int AllInitGlobalVarSize;
    874     BOOST_FOREACH( Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){
     877    BOOST_FOREACH( Variable *pVar, compiler.GetObjectModule().meta.GetGlobalVars() ){
    875878        if(pVar->GetOffsetAddress()&0x80000000){
    876879            pVar->SetOffsetAddress( (pVar->GetOffsetAddress()&0x7FFFFFFF)+AllInitGlobalVarSize );
     
    883886    // デバッグセクションを生成
    884887    ////////////////////////////////////
    885 
    886     //機械語コードとBasicコードの関係を整理
    887     extern SourceLines oldSourceLines;
    888     int MinObp,MaxObp;
    889     SourceLines tempSourceLines;
    890     MaxObp=0;
    891     while(1){
    892         for(i3=0,MinObp=0x0FFFFFFF;i3<(int)oldSourceLines.size();i3++){
    893             if(oldSourceLines[i3].GetNativeCodePos()<MinObp&&MaxObp<oldSourceLines[i3].GetNativeCodePos()){
    894                 MinObp=oldSourceLines[i3].GetNativeCodePos();
    895                 i4=i3;
    896             }
    897         }
    898         if(MinObp==0x0FFFFFFF) break;
    899         tempSourceLines.push_back( oldSourceLines[i4] );
    900         MaxObp=tempSourceLines.back().GetNativeCodePos();
    901     }
    902     oldSourceLines = tempSourceLines;
    903888
    904889    //デバッグセクションを生成
     
    946931
    947932    //データセクションのファイル上のサイズ
    948     if(compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.objectModule.dataTable.GetSize()+(FILE_ALIGNMENT-compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT);
    949     else FileSize_DataSection=compiler.objectModule.dataTable.GetSize();
     933    if(compiler.GetObjectModule().dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.GetObjectModule().dataTable.GetSize()+(FILE_ALIGNMENT-compiler.GetObjectModule().dataTable.GetSize()%FILE_ALIGNMENT);
     934    else FileSize_DataSection=compiler.GetObjectModule().dataTable.GetSize();
    950935    if(FileSize_DataSection) bUse_DataSection=1;
    951936    else bUse_DataSection=0;
     
    11091094            HintSize;           //ヒント名(関数名)テーブル
    11101095
    1111         compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
    1112         while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
     1096        compiler.GetObjectModule().meta.GetDllProcs().Iterator_Reset();
     1097        while( compiler.GetObjectModule().meta.GetDllProcs().Iterator_HasNext() )
    11131098        {
    1114             const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
     1099            const DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().Iterator_GetNext();
    11151100
    11161101            if( !pDllProc->IsUsing() ){
     
    11301115    ////////////////////////////////////////
    11311116    //仮想関数データテーブルスケジュール
    1132     compiler.objectModule.meta.GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
     1117    compiler.GetObjectModule().meta.GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
    11331118
    11341119
     
    12151200    if( obp == compiler.linker.GetNativeCode().GetSize() )
    12161201    {
    1217         //memcpy( OpBuffer, compiler.linker.GetNativeCode().GetCodeBuffer(), compiler.linker.GetNativeCode().GetSize() );
     1202        memcpy( OpBuffer, compiler.linker.GetNativeCode().GetCodeBuffer(), compiler.linker.GetNativeCode().GetSize() );
    12181203    }
    12191204    else
     
    16811666    if(bUse_DataSection){
    16821667        //データ テーブル
    1683         WriteFile(hFile,compiler.objectModule.dataTable.GetPtr(),compiler.objectModule.dataTable.GetSize(),(DWORD *)&i2,NULL);
     1668        WriteFile(hFile,compiler.GetObjectModule().dataTable.GetPtr(),compiler.GetObjectModule().dataTable.GetSize(),(DWORD *)&i2,NULL);
    16841669        i+=i2;
    16851670    }
     
    17931778
    17941779    //クラスに関するメモリを解放
    1795     compiler.objectModule.meta.GetClasses().Clear();
     1780    compiler.GetObjectModule().meta.GetClasses().Clear();
    17961781}
Note: See TracChangeset for help on using the changeset viewer.