Changeset 257 in dev for trunk


Ignore:
Timestamp:
Aug 2, 2007, 4:17:27 AM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev
Files:
1 added
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/BasicCompiler.vcproj

    r256 r257  
    12651265                Name="Compiler Classes"
    12661266                >
     1267                <File
     1268                    RelativePath="..\BasicCompiler_Common\src\CodeGenerator.cpp"
     1269                    >
     1270                </File>
     1271                <File
     1272                    RelativePath="..\BasicCompiler_Common\src\Compiler.cpp"
     1273                    >
     1274                </File>
     1275                <File
     1276                    RelativePath="..\BasicCompiler_Common\src\Linker.cpp"
     1277                    >
     1278                </File>
    12671279                <Filter
    12681280                    Name="Langauge Classes"
     
    12701282                    <File
    12711283                        RelativePath="..\BasicCompiler_Common\src\Class.cpp"
    1272                         >
    1273                     </File>
    1274                     <File
    1275                         RelativePath="..\BasicCompiler_Common\src\CodeGenerator.cpp"
    1276                         >
    1277                     </File>
    1278                     <File
    1279                         RelativePath="..\BasicCompiler_Common\src\Compiler.cpp"
    12801284                        >
    12811285                    </File>
  • trunk/abdev/BasicCompiler64/BasicCompiler.vcproj

    r254 r257  
    290290            </Filter>
    291291            <Filter
    292                 Name="Language Classes"
    293                 >
    294                 <File
    295                     RelativePath="..\BasicCompiler_Common\include\Class.h"
    296                     >
    297                 </File>
    298                 <File
    299                     RelativePath="..\BasicCompiler_Common\include\CodeGenerator.h"
    300                     >
    301                 </File>
    302                 <File
    303                     RelativePath="..\BasicCompiler_Common\include\Compiler.h"
    304                     >
    305                 </File>
    306                 <File
    307                     RelativePath="..\BasicCompiler_Common\include\Const.h"
    308                     >
    309                 </File>
    310                 <File
    311                     RelativePath="..\BasicCompiler_Common\include\DataTable.h"
    312                     >
    313                 </File>
    314                 <File
    315                     RelativePath="..\BasicCompiler_Common\include\Exception.h"
    316                     >
    317                 </File>
    318                 <File
    319                     RelativePath="..\BasicCompiler_Common\include\LexicalScope.h"
    320                     >
    321                 </File>
    322                 <File
    323                     RelativePath="..\BasicCompiler_Common\include\Member.h"
    324                     >
    325                 </File>
    326                 <File
    327                     RelativePath="..\BasicCompiler_Common\include\MetaImpl.h"
    328                     >
    329                 </File>
    330                 <File
    331                     RelativePath="..\BasicCompiler_Common\include\Method.h"
    332                     >
    333                 </File>
    334                 <File
    335                     RelativePath="..\BasicCompiler_Common\include\Namespace.h"
    336                     >
    337                 </File>
    338                 <File
    339                     RelativePath="..\BasicCompiler_Common\include\NamespaceSupporter.h"
    340                     >
    341                 </File>
    342                 <File
    343                     RelativePath="..\BasicCompiler_Common\include\NativeCode.h"
    344                     >
    345                 </File>
    346                 <File
    347                     RelativePath="..\BasicCompiler_Common\include\Parameter.h"
    348                     >
    349                 </File>
    350                 <File
    351                     RelativePath="..\BasicCompiler_Common\include\Procedure.h"
    352                     >
    353                 </File>
    354                 <File
    355                     RelativePath="..\BasicCompiler_Common\include\Program.h"
    356                     >
    357                 </File>
    358                 <File
    359                     RelativePath="..\BasicCompiler_Common\include\Prototype.h"
    360                     >
    361                 </File>
    362                 <File
    363                     RelativePath="..\BasicCompiler_Common\include\SmoothieImpl.h"
    364                     >
    365                 </File>
    366                 <File
    367                     RelativePath="..\BasicCompiler_Common\include\Symbol.h"
    368                     >
    369                 </File>
    370                 <File
    371                     RelativePath="..\BasicCompiler_Common\include\Type.h"
    372                     >
    373                 </File>
    374                 <File
    375                     RelativePath="..\BasicCompiler_Common\include\TypeDef.h"
    376                     >
    377                 </File>
    378                 <File
    379                     RelativePath="..\BasicCompiler_Common\include\Variable.h"
     292                Name="Common Classes"
     293                >
     294                <File
     295                    RelativePath="..\BasicCompiler_Common\include\BoostSerializationSupport.h"
     296                    >
     297                </File>
     298                <File
     299                    RelativePath="..\BasicCompiler_Common\include\Hashmap.h"
     300                    >
     301                </File>
     302                <File
     303                    RelativePath="..\BasicCompiler_Common\include\logger.h"
    380304                    >
    381305                </File>
    382306            </Filter>
    383307            <Filter
    384                 Name="Common Classes"
    385                 >
    386                 <File
    387                     RelativePath="..\BasicCompiler_Common\include\BoostSerializationSupport.h"
    388                     >
    389                 </File>
    390                 <File
    391                     RelativePath="..\BasicCompiler_Common\include\Hashmap.h"
    392                     >
    393                 </File>
    394                 <File
    395                     RelativePath="..\BasicCompiler_Common\include\logger.h"
    396                     >
    397                 </File>
     308                Name="Compiler Classes"
     309                >
     310                <File
     311                    RelativePath="..\BasicCompiler_Common\include\CodeGenerator.h"
     312                    >
     313                </File>
     314                <File
     315                    RelativePath="..\BasicCompiler_Common\include\Compiler.h"
     316                    >
     317                </File>
     318                <File
     319                    RelativePath="..\BasicCompiler_Common\include\Linker.h"
     320                    >
     321                </File>
     322                <Filter
     323                    Name="Language Classes"
     324                    >
     325                    <File
     326                        RelativePath="..\BasicCompiler_Common\include\Class.h"
     327                        >
     328                    </File>
     329                    <File
     330                        RelativePath="..\BasicCompiler_Common\include\Const.h"
     331                        >
     332                    </File>
     333                    <File
     334                        RelativePath="..\BasicCompiler_Common\include\DataTable.h"
     335                        >
     336                    </File>
     337                    <File
     338                        RelativePath="..\BasicCompiler_Common\include\Exception.h"
     339                        >
     340                    </File>
     341                    <File
     342                        RelativePath="..\BasicCompiler_Common\include\LexicalScope.h"
     343                        >
     344                    </File>
     345                    <File
     346                        RelativePath="..\BasicCompiler_Common\include\Member.h"
     347                        >
     348                    </File>
     349                    <File
     350                        RelativePath="..\BasicCompiler_Common\include\Meta.h"
     351                        >
     352                    </File>
     353                    <File
     354                        RelativePath="..\BasicCompiler_Common\include\Method.h"
     355                        >
     356                    </File>
     357                    <File
     358                        RelativePath="..\BasicCompiler_Common\include\Namespace.h"
     359                        >
     360                    </File>
     361                    <File
     362                        RelativePath="..\BasicCompiler_Common\include\NamespaceSupporter.h"
     363                        >
     364                    </File>
     365                    <File
     366                        RelativePath="..\BasicCompiler_Common\include\NativeCode.h"
     367                        >
     368                    </File>
     369                    <File
     370                        RelativePath="..\BasicCompiler_Common\include\Parameter.h"
     371                        >
     372                    </File>
     373                    <File
     374                        RelativePath="..\BasicCompiler_Common\include\Procedure.h"
     375                        >
     376                    </File>
     377                    <File
     378                        RelativePath="..\BasicCompiler_Common\include\Program.h"
     379                        >
     380                    </File>
     381                    <File
     382                        RelativePath="..\BasicCompiler_Common\include\Prototype.h"
     383                        >
     384                    </File>
     385                    <File
     386                        RelativePath="..\BasicCompiler_Common\include\SmoothieImpl.h"
     387                        >
     388                    </File>
     389                    <File
     390                        RelativePath="..\BasicCompiler_Common\include\Symbol.h"
     391                        >
     392                    </File>
     393                    <File
     394                        RelativePath="..\BasicCompiler_Common\include\Type.h"
     395                        >
     396                    </File>
     397                    <File
     398                        RelativePath="..\BasicCompiler_Common\include\TypeDef.h"
     399                        >
     400                    </File>
     401                    <File
     402                        RelativePath="..\BasicCompiler_Common\include\Variable.h"
     403                        >
     404                    </File>
     405                </Filter>
    398406            </Filter>
    399407        </Filter>
     
    476484            </File>
    477485            <Filter
    478                 Name="Compile"
     486                Name="x64Compile"
    479487                >
    480488                <File
     
    10971105                </File>
    10981106                <Filter
     1107                    Name="Core Classes"
     1108                    >
     1109                    <File
     1110                        RelativePath="..\BasicCompiler_Common\src\CommonCodeGenerator.cpp"
     1111                        >
     1112                    </File>
     1113                </Filter>
     1114            </Filter>
     1115            <Filter
     1116                Name="Compiler Classes"
     1117                >
     1118                <File
     1119                    RelativePath="..\BasicCompiler_Common\src\CodeGenerator.cpp"
     1120                    >
     1121                </File>
     1122                <File
     1123                    RelativePath="..\BasicCompiler_Common\src\Compiler.cpp"
     1124                    >
     1125                </File>
     1126                <File
     1127                    RelativePath="..\BasicCompiler_Common\src\Linker.cpp"
     1128                    >
     1129                </File>
     1130                <Filter
    10991131                    Name="Language Classes"
    11001132                    >
     
    11041136                    </File>
    11051137                    <File
    1106                         RelativePath="..\BasicCompiler_Common\src\CodeGenerator.cpp"
    1107                         >
    1108                     </File>
    1109                     <File
    1110                         RelativePath="..\BasicCompiler_Common\src\Compiler.cpp"
    1111                         >
    1112                     </File>
    1113                     <File
    11141138                        RelativePath="..\BasicCompiler_Common\src\Const.cpp"
    11151139                        >
     
    11691193                    <File
    11701194                        RelativePath="..\BasicCompiler_Common\src\Variable.cpp"
    1171                         >
    1172                     </File>
    1173                 </Filter>
    1174                 <Filter
    1175                     Name="Core Classes"
    1176                     >
    1177                     <File
    1178                         RelativePath="..\BasicCompiler_Common\src\CommonCodeGenerator.cpp"
    11791195                        >
    11801196                    </File>
  • trunk/abdev/BasicCompiler64/Compile_Calc.cpp

    r226 r257  
    9696            }
    9797            else{
    98                 if( compiler.GetMeta().GetGlobalConsts().IsExist(variable)
    99                     || compiler.GetMeta().GetGlobalConstMacros().IsExist(variable) )
     98                if( compiler.objectModule.meta.GetGlobalConsts().IsExist(variable)
     99                    || compiler.objectModule.meta.GetGlobalConstMacros().IsExist(variable) )
    100100                {
    101101                    //定数リストに該当したとき
     
    236236    }
    237237
    238     if( varType.IsObject() && compiler.GetMeta().GetBlittableTypes().IsExist( calcType ) ){
     238    if( varType.IsObject() && compiler.objectModule.meta.GetBlittableTypes().IsExist( calcType ) ){
    239239        // Blittable型をオブジェクトとして扱う
    240240        vector<const UserProc *> userProcs;
    241         compiler.GetMeta().GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );
     241        compiler.objectModule.meta.GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );
    242242        if( userProcs.size() != 1 ){
    243243            SetError();
  • trunk/abdev/BasicCompiler64/Compile_CallProc.cpp

    r254 r257  
    126126                pobj_c = &varType.GetClass();
    127127                if( NATURAL_TYPE( varType.GetBasicType() ) != DEF_OBJECT ){
    128                     pobj_c=compiler.GetMeta().GetClasses().Find(ObjectName);
     128                    pobj_c=compiler.objectModule.meta.GetClasses().Find(ObjectName);
    129129                    if( pobj_c ){
    130130                        isStatic = true;
  • trunk/abdev/BasicCompiler64/Compile_Func.cpp

    r226 r257  
    3636        tempParm=temp2;
    3737
    38         type.SetType( DEF_OBJECT, compiler.GetMeta().GetClasses().GetStringClassPtr() );
     38        type.SetType( DEF_OBJECT, compiler.objectModule.meta.GetClasses().GetStringClassPtr() );
    3939    }
    4040
     
    8484
    8585        //オーバーロードを解決
    86         pUserProc=OverloadSolution(name,subs,compiler.GetMeta().GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );
     86        pUserProc=OverloadSolution(name,subs,compiler.objectModule.meta.GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );
    8787
    8888        if(!pUserProc){
  • trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp

    r255 r257  
    5555
    5656        //クラスに属する静的メンバを定義
    57         compiler.GetMeta().GetClasses().InitStaticMember();
     57        compiler.objectModule.meta.GetClasses().InitStaticMember();
    5858
    5959        GetGlobalDataForDll();
     
    7777        const PertialSchedule *pStackFramePertialSchedule = compiler.codeGenerator.op_sub_rsp( 0, true );
    7878
    79         BOOST_FOREACH( Variable *pVar, compiler.GetMeta().GetGlobalVars() ){
     79        BOOST_FOREACH( Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){
    8080            if(memicmp(pVar->GetName().c_str(),"Static%",7)==0){
    8181                //コンストラクタ呼び出し
     
    141141        && userProc.GetParentClass().GetName() == "_System_TypeBase" ){
    142142
    143             compiler.GetMeta().GetClasses().Compile_System_InitializeUserTypes();
     143            compiler.objectModule.meta.GetClasses().Compile_System_InitializeUserTypes();
    144144    }
    145145    else if( userProc.GetName() == "RegisterGlobalRoots"
     
    190190
    191191    //コンパイルスタートをクラス管理クラスに追加
    192     compiler.GetMeta().GetClasses().StartCompile( pUserProc );
     192    compiler.objectModule.meta.GetClasses().StartCompile( pUserProc );
    193193
    194194    //コンパイル中の関数
     
    727727
    728728repeat:
    729     compiler.GetMeta().GetUserProcs().Iterator_Reset();
    730     while( compiler.GetMeta().GetUserProcs().Iterator_HasNext() )
     729    compiler.objectModule.meta.GetUserProcs().Iterator_Reset();
     730    while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() )
    731731    {
    732         UserProc *pUserProc = compiler.GetMeta().GetUserProcs().Iterator_GetNext();
     732        UserProc *pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
    733733        CompileBufferInProcedure( *pUserProc );
    734734    }
     
    746746        //プロシージャコンパイルによって、プロシージャコンパイルが必要になる場合
    747747
    748         compiler.GetMeta().GetUserProcs().Iterator_Reset();
    749         while( compiler.GetMeta().GetUserProcs().Iterator_HasNext() )
     748        compiler.objectModule.meta.GetUserProcs().Iterator_Reset();
     749        while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() )
    750750        {
    751             UserProc *pUserProc = compiler.GetMeta().GetUserProcs().Iterator_GetNext();
     751            UserProc *pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
    752752            CompileBufferInProcedure( *pUserProc );
    753753        }
  • trunk/abdev/BasicCompiler64/Compile_Statement.cpp

    r254 r257  
    136136    if(resultType.IsDouble()){
    137137        double dbl=0;
    138         offset=compiler.GetDataTable().Add( dbl );
     138        offset=compiler.objectModule.dataTable.Add( dbl );
    139139
    140140        //comisd xmm0,qword ptr[data table offset]
     
    153153    else if(resultType.IsSingle()){
    154154        float flt=0;
    155         offset=compiler.GetDataTable().Add( flt );
     155        offset=compiler.objectModule.dataTable.Add( flt );
    156156
    157157        //comiss xmm0,dword ptr[data table offset]
  • trunk/abdev/BasicCompiler64/Compile_Var.cpp

    r254 r257  
    389389    // 名前空間を分離
    390390    char namespaceStr[VN_SIZE]="", simpleName[VN_SIZE];
    391     compiler.GetMeta().GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName );
     391    compiler.objectModule.meta.GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName );
    392392
    393393    // 先頭オブジェクトまたはクラス名と入れ子メンバに分割
     
    482482        //Const修飾子のメソッド内でメンバ書き込みアクセスが発生したとき
    483483        //(コンストラクタ、デストラクタ内を除く)
    484         const CMethod *pMethod = compiler.GetMeta().GetClasses().GetNowCompilingMethodInfo();
     484        const CMethod *pMethod = compiler.objectModule.meta.GetClasses().GetNowCompilingMethodInfo();
    485485        if( isWriteAccess &&
    486486            pMethod->IsConst() &&
     
    519519            GetNowStaticVarFullName(VarName,temporary);
    520520
    521             pVar = compiler.GetMeta().GetGlobalVars().Find( Symbol( temporary ) );
     521            pVar = compiler.objectModule.meta.GetGlobalVars().Find( Symbol( temporary ) );
    522522            if( pVar ){
    523523                goto GlobalOk;
     
    542542            }
    543543
    544             int typeDefIndex = compiler.GetMeta().GetTypeDefs().GetIndex( VarName );
     544            int typeDefIndex = compiler.objectModule.meta.GetTypeDefs().GetIndex( VarName );
    545545            if( typeDefIndex != -1 ){
    546546                // TypeDef後の型名だったとき
    547                 lstrcpy( VarName, compiler.GetMeta().GetTypeDefs()[typeDefIndex].GetBaseName().c_str() );
     547                lstrcpy( VarName, compiler.objectModule.meta.GetTypeDefs()[typeDefIndex].GetBaseName().c_str() );
    548548            }
    549549
    550550            char temp2[VN_SIZE];
    551551            sprintf(temp2,"%s.%s",VarName,temporary);
    552             pVar = compiler.GetMeta().GetGlobalVars().Find( Symbol( temp2 ) );
     552            pVar = compiler.objectModule.meta.GetGlobalVars().Find( Symbol( temp2 ) );
    553553            if( pVar ){
    554554                lstrcpy(member,tempMember);
     
    562562            char temp2[VN_SIZE];
    563563            sprintf(temp2,"%s.%s",compiler.pCompilingClass->GetName().c_str(),VarName);
    564             pVar = compiler.GetMeta().GetGlobalVars().Find( Symbol( temp2 ) );
     564            pVar = compiler.objectModule.meta.GetGlobalVars().Find( Symbol( temp2 ) );
    565565            if( pVar ){
    566566                goto GlobalOk;
     
    572572        /////////////////////
    573573
    574         pVar = compiler.GetMeta().GetGlobalVars().BackSearch( Symbol( VarName ) );
     574        pVar = compiler.objectModule.meta.GetGlobalVars().BackSearch( Symbol( VarName ) );
    575575        if( pVar ){
    576576            goto GlobalOk;
     
    857857            char *temp;
    858858            temp=(char *)i64data;
    859             i2=compiler.GetDataTable().AddString( temp );
     859            i2=compiler.objectModule.dataTable.AddString( temp );
    860860            HeapDefaultFree(temp);
    861861
     
    10071007            char *temp;
    10081008            temp=(char *)i64data;
    1009             i2=compiler.GetDataTable().AddString( temp );
     1009            i2=compiler.objectModule.dataTable.AddString( temp );
    10101010            HeapDefaultFree(temp);
    10111011
     
    12781278    }
    12791279
    1280     BOOST_FOREACH( const Variable *pVar, compiler.GetMeta().GetGlobalVars() ){
     1280    BOOST_FOREACH( const Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){
    12811281        if( pVar->GetType().IsObject() || pVar->GetType().IsPointer() || pVar->GetType().IsStruct() ){
    12821282            // オブジェクトまたはポインタだったとき
  • trunk/abdev/BasicCompiler64/MakePeHdr.cpp

    r255 r257  
    129129    //////////////////
    130130    // データテーブル
    131     compiler.GetDataTable().Init();
     131    compiler.objectModule.dataTable.Clear();
    132132    if(bDebugCompile){
    133         compiler.GetDataTable().Add( (long)0x00000002 );
     133        compiler.objectModule.dataTable.Add( (long)0x00000002 );
    134134    }
    135135
     
    155155
    156156    //関数ポインタ情報を初期化
    157     compiler.GetMeta().GetProcPointers().clear();
     157    compiler.objectModule.meta.GetProcPointers().clear();
    158158
    159159    // 名前空間情報を取得
    160160    NamespaceSupporter::CollectNamespaces(
    161161        Smoothie::Lexical::source.GetBuffer(),
    162         compiler.GetMeta().GetNamespaces()
     162        compiler.objectModule.meta.GetNamespaces()
    163163    );
    164164
     
    166166    //   CollectProcedures関数の中で参照されるオブジェクト名を事前に取得する。
    167167    //     ※オブジェクトの内容までは取得しない
    168     compiler.GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
     168    compiler.objectModule.meta.GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
    169169
    170170    //TypeDef情報を初期化
    171     compiler.GetMeta().GetTypeDefs().Init();
     171    compiler.objectModule.meta.GetTypeDefs().Init();
    172172
    173173    //定数情報を取得
     
    178178    CollectProcedures(
    179179        Smoothie::Lexical::source,
    180         compiler.GetMeta().GetUserProcs(),
    181         compiler.GetMeta().GetDllProcs()
     180        compiler.objectModule.meta.GetUserProcs(),
     181        compiler.objectModule.meta.GetDllProcs()
    182182    );
    183183
    184184    // クラス情報を取得(※注 - CollectProceduresの後に呼び出す)
    185     compiler.GetMeta().GetClasses().GetAllClassInfo();
     185    compiler.objectModule.meta.GetClasses().GetAllClassInfo();
    186186
    187187    // サブルーチン(ユーザー定義、DLL関数)のイテレータの準備
    188     compiler.GetMeta().GetUserProcs().Iterator_Init();
    189     compiler.GetMeta().GetDllProcs().Iterator_Init();
     188    compiler.objectModule.meta.GetUserProcs().Iterator_Init();
     189    compiler.objectModule.meta.GetDllProcs().Iterator_Init();
    190190
    191191/*
    192     if( !compiler.GetMeta().WriteXml( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) )
     192    if( !compiler.objectModule.meta.WriteXml( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) )
    193193    {
    194194        MessageBox(0,"XML書き込みに失敗","test",0);
     
    200200    }
    201201
    202     if( !compiler.GetMeta().WriteBinaly( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )
     202    if( !compiler.objectModule.meta.WriteBinaly( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )
    203203    {
    204204        MessageBox(0,"バイナリ書き込みに失敗","test",0);
     
    209209        MessageBox(0,"バイナリ読み込みに失敗","test",0);
    210210    }
    211     if( !compiler.GetMeta().WriteText( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )
     211    if( !compiler.objectModule.meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )
    212212    {
    213213        MessageBox(0,"バイナリ書き込みに失敗","test",0);
     
    218218        MessageBox(0,"バイナリ読み込みに失敗","test",0);
    219219    }
    220     compiler.GetMeta() = (*pTempMeta);*/
     220    compiler.objectModule.meta = (*pTempMeta);*/
    221221
    222222
     
    384384
    385385        // コード生成対象を選択
    386         compiler.codeGenerator.Select( compiler.globalNativeCode );
     386        compiler.codeGenerator.Select( compiler.objectModule.globalNativeCode );
    387387
    388388        trace_for_sourcecodestep( "★★★ グローバル領域のコンパイルを開始" );
     
    407407
    408408        //クラスに属する静的メンバを定義
    409         compiler.GetMeta().GetClasses().InitStaticMember();
     409        compiler.objectModule.meta.GetClasses().InitStaticMember();
    410410
    411411        //グローバル実行領域をコンパイル開始
     
    524524    // 使用するDLL関数のチェック
    525525    ////////////////////////////////
    526     compiler.GetMeta().GetDllProcs().Iterator_Reset();
    527     while( compiler.GetMeta().GetDllProcs().Iterator_HasNext() )
     526    compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
     527    while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
    528528    {
    529         const DllProc *pDllProc = compiler.GetMeta().GetDllProcs().Iterator_GetNext();
     529        const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
    530530
    531531        if( !pDllProc->IsUsing() ){
     
    598598            //辞書順にサーチ
    599599            temporary[0]=0;
    600             compiler.GetMeta().GetUserProcs().Iterator_Reset();
    601             while( compiler.GetMeta().GetUserProcs().Iterator_HasNext() )
     600            compiler.objectModule.meta.GetUserProcs().Iterator_Reset();
     601            while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() )
    602602            {
    603                 pUserProc = compiler.GetMeta().GetUserProcs().Iterator_GetNext();
     603                pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
    604604                if(pUserProc->IsExport()){
    605605                    if(temporary[0]=='\0'){
     
    702702    int ImportDllNum=0;
    703703
    704     compiler.GetMeta().GetDllProcs().Iterator_Reset();
    705     while( compiler.GetMeta().GetDllProcs().Iterator_HasNext() )
     704    compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
     705    while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
    706706    {
    707         const DllProc *pDllProc = compiler.GetMeta().GetDllProcs().Iterator_GetNext();
     707        const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
    708708
    709709        if( !pDllProc->IsUsing() ){
     
    741741        pImportDescriptor[i].Name=i*0x10;   //※すぐ下で再計算
    742742
    743         compiler.GetMeta().GetDllProcs().Iterator_Reset();
    744         while( compiler.GetMeta().GetDllProcs().Iterator_HasNext() )
     743        compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
     744        while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
    745745        {
    746             const DllProc *pDllProc = compiler.GetMeta().GetDllProcs().Iterator_GetNext();
     746            const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
    747747
    748748            if( !pDllProc->IsUsing() ){
     
    779779    pHintTable=(char *)HeapAlloc(hHeap,0,HintAllocSize);
    780780    for(i=0,i5=0;i<ImportDllNum;i++){
    781         compiler.GetMeta().GetDllProcs().Iterator_Reset();
    782         while( compiler.GetMeta().GetDllProcs().Iterator_HasNext() )
     781        compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
     782        while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
    783783        {
    784             DllProc *pDllProc = compiler.GetMeta().GetDllProcs().Iterator_GetNext();
     784            DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
    785785
    786786            if( !pDllProc->IsUsing() ){
     
    830830    //(デバッグ情報で利用される)
    831831    extern int AllInitGlobalVarSize;
    832     BOOST_FOREACH( Variable *pVar, compiler.GetMeta().GetGlobalVars() ){
     832    BOOST_FOREACH( Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){
    833833        if(pVar->GetOffsetAddress()&0x80000000){
    834834            pVar->SetOffsetAddress(
     
    915915
    916916    //データセクションのファイル上のサイズ
    917     if(compiler.GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.GetDataTable().GetSize()+(FILE_ALIGNMENT-compiler.GetDataTable().GetSize()%FILE_ALIGNMENT);
    918     else FileSize_DataSection=compiler.GetDataTable().GetSize();
     917    if(compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.objectModule.dataTable.GetSize()+(FILE_ALIGNMENT-compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT);
     918    else FileSize_DataSection=compiler.objectModule.dataTable.GetSize();
    919919    if(FileSize_DataSection) bUse_DataSection=1;
    920920    else bUse_DataSection=0;
     
    10771077            LookupSize;         //ルックアップテーブル
    10781078
    1079         compiler.GetMeta().GetDllProcs().Iterator_Reset();
    1080         while( compiler.GetMeta().GetDllProcs().Iterator_HasNext() )
     1079        compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
     1080        while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
    10811081        {
    1082             const DllProc *pDllProc = compiler.GetMeta().GetDllProcs().Iterator_GetNext();
     1082            const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
    10831083
    10841084            if( !pDllProc->IsUsing() ){
     
    10981098    ////////////////////////////////////////
    10991099    //仮想関数データテーブルスケジュール
    1100     compiler.GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
     1100    compiler.objectModule.meta.GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
    11011101
    11021102
     
    16311631    if(bUse_DataSection){
    16321632        //データ テーブル
    1633         WriteFile(hFile,compiler.GetDataTable().GetPtr(),compiler.GetDataTable().GetSize(),(DWORD *)&i2,NULL);
     1633        WriteFile(hFile,compiler.objectModule.dataTable.GetPtr(),compiler.objectModule.dataTable.GetSize(),(DWORD *)&i2,NULL);
    16341634        i+=i2;
    16351635    }
     
    17431743
    17441744    //クラスに関するメモリを解放
    1745     compiler.GetMeta().GetClasses().Clear();
     1745    compiler.objectModule.meta.GetClasses().Clear();
    17461746}
  • trunk/abdev/BasicCompiler64/NumOpe.cpp

    r255 r257  
    2525        SetStringQuotes( parameter );
    2626
    27         Operator_New( *compiler.GetMeta().GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.GetMeta().GetClasses().GetStringClassPtr() ) );
     27        Operator_New( *compiler.objectModule.meta.GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.objectModule.meta.GetClasses().GetStringClassPtr() ) );
    2828
    2929        free( parameter );
     
    259259        Type leftType;
    260260        if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){
    261             if( isClassName == false && compiler.GetMeta().GetBlittableTypes().IsExist( leftType ) ){
     261            if( isClassName == false && compiler.objectModule.meta.GetBlittableTypes().IsExist( leftType ) ){
    262262                // 左側のオブジェクト部分がBlittable型のとき
    263263
     
    265265                lstrcpy( temporary, termLeft );
    266266                sprintf( termLeft, "%s(%s)",
    267                     compiler.GetMeta().GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(),
     267                    compiler.objectModule.meta.GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(),
    268268                    temporary );
    269269            }
     
    293293
    294294    if( pIsClassName ){
    295         if( compiler.GetMeta().GetClasses().Find( termFull ) ){
     295        if( compiler.objectModule.meta.GetClasses().Find( termFull ) ){
    296296            *pIsClassName = true;
    297297            return true;
     
    387387        }
    388388
    389         ConstMacro *pConstMacro = compiler.GetMeta().GetGlobalConstMacros().Find( procName );
     389        ConstMacro *pConstMacro = compiler.objectModule.meta.GetGlobalConstMacros().Find( procName );
    390390        if( pConstMacro )
    391391        {
     
    574574        }
    575575
    576         i2 = compiler.GetDataTable().AddBinary( binary, num * tempBaseType.GetSize() );
     576        i2 = compiler.objectModule.dataTable.AddBinary( binary, num * tempBaseType.GetSize() );
    577577
    578578        //mov reg,i2
     
    603603
    604604            if(resultType.IsDouble()){
    605                 i3 = compiler.GetDataTable().Add( i64data );
     605                i3 = compiler.objectModule.dataTable.Add( i64data );
    606606
    607607                //movlpd xmm_reg,qword ptr[data table offset]
     
    617617                memcpy(&i32data,&flt,sizeof(long));
    618618
    619                 i3 = compiler.GetDataTable().Add( i32data );
     619                i3 = compiler.objectModule.dataTable.Add( i32data );
    620620
    621621                //movss xmm_reg,dword ptr[data table offset]
     
    798798
    799799                        type_stack[sp]=DEF_OBJECT;
    800                         index_stack[sp]=(LONG_PTR)compiler.GetMeta().GetClasses().GetStringClassPtr();
     800                        index_stack[sp]=(LONG_PTR)compiler.objectModule.meta.GetClasses().GetStringClassPtr();
    801801                        bLiteralCalculation=0;
    802802
     
    811811                    bLiteralCalculation=0;
    812812
    813                     i2 = compiler.GetDataTable().AddString( term, i3 );
     813                    i2 = compiler.objectModule.dataTable.AddString( term, i3 );
    814814
    815815                    //mov reg,i2
     
    904904                        }
    905905                        else{
    906                             index_stack[sp] = (LONG_PTR)compiler.GetMeta().GetClasses().GetObjectClassPtr();
     906                            index_stack[sp] = (LONG_PTR)compiler.objectModule.meta.GetClasses().GetObjectClassPtr();
    907907                        }
    908908
     
    927927                    //////////////
    928928
    929                     i3 = compiler.GetMeta().GetGlobalConsts().GetBasicType(term);
     929                    i3 = compiler.objectModule.meta.GetGlobalConsts().GetBasicType(term);
    930930                    if(i3){
    931                         if( compiler.GetMeta().GetGlobalConsts().IsStringPtr( term ) ){
     931                        if( compiler.objectModule.meta.GetGlobalConsts().IsStringPtr( term ) ){
    932932                            //リテラル文字列
    933933
    934                             double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term);
     934                            double dbl = compiler.objectModule.meta.GetGlobalConsts().GetDoubleData(term);
    935935                            memcpy(&i64data,&dbl,sizeof(double));
    936936
     
    946946                        if(IsRealNumberType(i3)){
    947947                            //実数
    948                             double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term);
     948                            double dbl = compiler.objectModule.meta.GetGlobalConsts().GetDoubleData(term);
    949949                            memcpy(&i64data,&dbl,sizeof(double));
    950950                            goto Literal;
     
    952952                        else if(IsWholeNumberType(i3)){
    953953                            //整数
    954                             i64data = compiler.GetMeta().GetGlobalConsts().GetWholeData(term);
     954                            i64data = compiler.objectModule.meta.GetGlobalConsts().GetWholeData(term);
    955955                            goto Literal;
    956956                        }
     
    993993                        }
    994994                        else{
    995                             i3 = compiler.GetDataTable().Add( i64data );
     995                            i3 = compiler.objectModule.dataTable.Add( i64data );
    996996
    997997                            //movlpd xmm_reg,qword ptr[data table offset]
     
    10151015                        }
    10161016                        else{
    1017                             i3=compiler.GetDataTable().Add( i32data );
     1017                            i3=compiler.objectModule.dataTable.Add( i32data );
    10181018
    10191019                            //movss xmm_reg,dword ptr[data table offset]
  • trunk/abdev/BasicCompiler64/NumOpe_Arithmetic.cpp

    r242 r257  
    470470        double dbl;
    471471        dbl=-1;
    472         i32data = compiler.GetDataTable().Add( dbl );
     472        i32data = compiler.objectModule.dataTable.Add( dbl );
    473473
    474474        //mulsd xmm_reg,qword ptr[data table offset]   ※data = -1
     
    495495        float flt;
    496496        flt=-1;
    497         i32data = compiler.GetDataTable().Add( flt );
     497        i32data = compiler.objectModule.dataTable.Add( flt );
    498498
    499499        //mulss xmm_reg,dword ptr[data table offset]   ※data = -1
  • trunk/abdev/BasicCompiler64/NumOpe_TypeOperation.cpp

    r242 r257  
    8989            //addsd xmm_reg,qword ptr[offset]   ※offset value:43f0000000000000
    9090            _int64 i64data=0x43f0000000000000;
    91             long temp=compiler.GetDataTable().Add( i64data );
     91            long temp=compiler.objectModule.dataTable.Add( i64data );
    9292            compiler.codeGenerator.PutOld(
    9393                (char)0xF2,
     
    149149            //addss xmm_reg,dword ptr[offset]   ※offset value:5f800000
    150150            long i32data=0x5f800000;
    151             long temp=compiler.GetDataTable().Add( i32data );
     151            long temp=compiler.objectModule.dataTable.Add( i32data );
    152152            compiler.codeGenerator.PutOld(
    153153                (char)0xF3,
  • trunk/abdev/BasicCompiler_Common/include/Linker.h

    r256 r257  
    3232class Linker
    3333{
    34     // メタ情報
    35     vector<const ObjectModule *> objectModules;
     34    // データテーブルスケジュール
     35    void ResolveDataTableSchedules( long dataSectionBaseOffset );
     36
     37    // DLL関数スケジュール
     38    void ResolveDllProcSchedules( long codeSectionBaseOffset, long importSectionBaseOffset );
     39
     40    // ユーザ定義関数スケジュール
     41    void ResolveUserProcSchedules( long codeSectionBaseOffset );
     42
     43    // グローバル変数スケジュール
     44    void ResolveGlobalVarSchedules( long rwSectionBaseOffset );
     45
     46    NativeCode nativeCode;
     47
     48    DWORD imageBase;
     49
     50public:
     51    Linker()
     52    {
     53    }
     54
     55    void SetImageBase( DWORD imageBase )
     56    {
     57        this->imageBase = imageBase;
     58    }
     59
     60    // リンク
     61    void Link( vector<ObjectModule *> &objectModules );
    3662};
  • trunk/abdev/BasicCompiler_Common/include/NativeCode.h

    r256 r257  
    2222        UserProc,       // ユーザ定義関数呼び出し側スケジュール
    2323        AddressOf,      // ユーザ定義関数位置スケジュール
     24        DllProc,        // DLL関数位置スケジュール
    2425    };
    2526
     
    6263    }
    6364    Schedule( const ::DllProc *pDllProc, long offest )
    64         : type( Schedule::UserProc )
     65        : type( Schedule::DllProc )
    6566        , offset( offset )
    6667        , pDllProc( pDllProc )
     
    6970    ~Schedule()
    7071    {
     72    }
     73
     74    Type GetType() const
     75    {
     76        return type;
     77    }
     78    long GetOffset() const
     79    {
     80        return offset;
     81    }
     82    const ::DllProc &GetDllProc() const
     83    {
     84        if( type != Schedule::DllProc )
     85        {
     86            SetError();
     87        }
     88        return *pDllProc;
     89    }
     90    const ::UserProc &GetUserProc() const
     91    {
     92        if( type != Schedule::UserProc )
     93        {
     94            SetError();
     95        }
     96        return *pUserProc;
    7197    }
    7298
     
    188214        return size;
    189215    }
     216    const Schedules &GetSchedules() const
     217    {
     218        return schedules;
     219    }
    190220
    191221    long GetLong( int codePos ) const
     
    233263        ObpPlus( size );
    234264    }
    235     void Put( const NativeCode &nativeCode )
    236     {
    237         Put( nativeCode.codeBuffer, nativeCode.size );
    238     }
     265    void Put( const NativeCode &nativeCode );
    239266    void Put( _int64 i64data )
    240267    {
  • trunk/abdev/BasicCompiler_Common/include/Procedure.h

    r225 r257  
    314314    }
    315315
     316    const NativeCode &GetNativeCode() const
     317    {
     318        return nativeCode;
     319    }
    316320    NativeCode &GetNativeCode()
    317321    {
  • trunk/abdev/BasicCompiler_Common/src/NativeCode.cpp

    r250 r257  
    1515    {
    1616        int test=0;
     17    }
     18}
     19
     20void NativeCode::Put( const NativeCode &nativeCode )
     21{
     22    long baseOffset = size;
     23
     24    Put( nativeCode.codeBuffer, nativeCode.size );
     25
     26    BOOST_FOREACH( const Schedule &schedule, nativeCode.schedules )
     27    {
     28        this->schedules.push_back(
     29            Schedule(
     30                schedule.GetType(),
     31                baseOffset + schedule.GetOffset()
     32            )
     33        );
    1734    }
    1835}
Note: See TracChangeset for help on using the changeset viewer.