Changeset 198 in dev for trunk/abdev/BasicCompiler64


Ignore:
Timestamp:
Jun 27, 2007, 2:41:17 AM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev/BasicCompiler64
Files:
11 edited

Legend:

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

    r193 r198  
    6666                DebugInformationFormat="3"
    6767                CallingConvention="0"
     68                DisableSpecificWarnings="4103"
    6869            />
    6970            <Tool
     
    158159                EnableIntrinsicFunctions="true"
    159160                FavorSizeOrSpeed="1"
     161                WholeProgramOptimization="false"
    160162                AdditionalIncludeDirectories="..\..\;..\..\cpplibs\boost;..\BasicCompiler_Common\include"
    161163                PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;JPN;_AMD64_;_WIN64"
     
    163165                ExceptionHandling="1"
    164166                BasicRuntimeChecks="0"
    165                 RuntimeLibrary="0"
     167                RuntimeLibrary="1"
    166168                RuntimeTypeInfo="true"
    167169                UsePrecompiledHeader="0"
     
    176178                DebugInformationFormat="0"
    177179                CallingConvention="0"
     180                DisableSpecificWarnings="4103"
    178181            />
    179182            <Tool
     
    196199                SuppressStartupBanner="true"
    197200                AdditionalLibraryDirectories="..\..\jenga\lib\amd64"
    198                 IgnoreDefaultLibraryNames="libcpmtd.lib"
     201                IgnoreDefaultLibraryNames="libcpmt.lib"
    199202                GenerateDebugInformation="false"
    200203                ProgramDatabaseFile=".\Release/BasicCompiler64.pdb"
     
    258261                >
    259262            </File>
     263            <File
     264                RelativePath="..\BasicCompiler_Common\include\option.h"
     265                >
     266            </File>
    260267            <Filter
    261268                Name="言語対応文字列"
     
    306313                </File>
    307314                <File
     315                    RelativePath="..\BasicCompiler_Common\include\MetaImpl.h"
     316                    >
     317                </File>
     318                <File
     319                    RelativePath="..\BasicCompiler_Common\include\NamespaceSupporter.h"
     320                    >
     321                </File>
     322                <File
    308323                    RelativePath="..\BasicCompiler_Common\include\ProcedureImpl.h"
    309324                    >
     
    315330                <File
    316331                    RelativePath="..\BasicCompiler_Common\include\SmoothieImpl.h"
     332                    >
     333                </File>
     334                <File
     335                    RelativePath="..\BasicCompiler_Common\include\TypeDef.h"
     336                    >
     337                </File>
     338                <File
     339                    RelativePath="..\BasicCompiler_Common\include\VariableImpl.h"
    317340                    >
    318341                </File>
     
    10221045                </File>
    10231046                <File
     1047                    RelativePath="..\BasicCompiler_Common\src\NamespaceSupporter.cpp"
     1048                    >
     1049                </File>
     1050                <File
    10241051                    RelativePath="..\BasicCompiler_Common\src\ProcedureImpl.cpp"
    10251052                    >
     
    10311058                <File
    10321059                    RelativePath="..\BasicCompiler_Common\src\SmoothieImpl.cpp"
     1060                    >
     1061                </File>
     1062                <File
     1063                    RelativePath="..\BasicCompiler_Common\src\TypeDef.cpp"
     1064                    >
     1065                </File>
     1066                <File
     1067                    RelativePath="..\BasicCompiler_Common\src\VariableImpl.cpp"
    10331068                    >
    10341069                </File>
  • trunk/abdev/BasicCompiler64/Compile_Calc.cpp

    r183 r198  
    11#include <jenga/include/smoothie/Smoothie.h>
    22#include <jenga/include/smoothie/LexicalAnalysis.h>
     3
     4#include <Compiler.h>
    35
    46#include "../BasicCompiler_Common/common.h"
     
    230232    }
    231233
    232     if( varType.IsObject() && Smoothie::GetMeta().blittableTypes.IsExist( calcType ) ){
     234    if( varType.IsObject() && compiler.GetMeta().GetBlittableTypes().IsExist( calcType ) ){
    233235        // Blittable型をオブジェクトとして扱う
    234236        vector<UserProc *> userProcs;
    235         Smoothie::GetMeta().blittableTypes.GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );
     237        compiler.GetMeta().GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );
    236238        if( userProcs.size() != 1 ){
    237239            SetError();
  • trunk/abdev/BasicCompiler64/Compile_CallProc.cpp

    r183 r198  
    11#include <jenga/include/smoothie/Smoothie.h>
     2
     3#include <Compiler.h>
    24
    35#include "../BasicCompiler_Common/common.h"
     
    134136                pobj_c = &varType.GetClass();
    135137                if( NATURAL_TYPE( varType.GetBasicType() ) != DEF_OBJECT ){
    136                     pobj_c=Smoothie::GetMeta().GetClasses().Find(ObjectName);
     138                    pobj_c=compiler.GetMeta().GetClasses().Find(ObjectName);
    137139                    if( pobj_c ){
    138140                        isStatic = true;
  • trunk/abdev/BasicCompiler64/Compile_Func.cpp

    r183 r198  
    11#include <jenga/include/smoothie/Smoothie.h>
     2
     3#include <Compiler.h>
    24
    35#include "../BasicCompiler_Common/common.h"
     
    3234        tempParm=temp2;
    3335
    34         type.SetType( DEF_OBJECT, Smoothie::GetMeta().GetClasses().GetStringClassPtr() );
     36        type.SetType( DEF_OBJECT, compiler.GetMeta().GetClasses().GetStringClassPtr() );
    3537    }
    3638
     
    8082
    8183        //オーバーロードを解決
    82         pUserProc=OverloadSolution(name,subs,Smoothie::GetMeta().GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );
     84        pUserProc=OverloadSolution(name,subs,compiler.GetMeta().GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );
    8385
    8486        if(!pUserProc){
     
    165167void Opcode_Func_SizeOf( const string &typeName ){
    166168    Type tempType;
    167     if( !Type::StringToType( typeName, tempType ) ){
     169    if( !Compiler::StringToType( typeName, tempType ) ){
    168170        SetError(3,typeName,cp);
    169171        return;
  • trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp

    r183 r198  
    33
    44#include <Program.h>
     5#include <Compiler.h>
    56#include <LexicalScopingImpl.h>
    67#include <ClassImpl.h>
     8#include <VariableImpl.h>
     9#include <NamespaceSupporter.h>
    710
    811#include "../BasicCompiler_Common/common.h"
     
    5659
    5760        //クラスに属する静的メンバを定義
    58         Smoothie::GetMeta().GetClasses().InitStaticMember();
     61        compiler.GetMeta().GetClasses().InitStaticMember();
    5962
    6063        GetGlobalDataForDll();
     
    215218        && userProc.GetParentClass().GetName() == "_System_TypeBase" ){
    216219
    217             Smoothie::GetMeta().GetClasses().Compile_System_InitializeUserTypes();
     220            compiler.GetMeta().GetClasses().Compile_System_InitializeUserTypes();
    218221    }
    219222    else if( userProc.GetName() == "RegisterGlobalRoots"
     
    263266
    264267    //コンパイルスタートをクラス管理クラスに追加
    265     Smoothie::GetMeta().GetClasses().StartCompile( pUserProc );
     268    compiler.GetMeta().GetClasses().StartCompile( pUserProc );
    266269
    267270    //コンパイル中の関数
     
    269272
    270273    // コンパイル中の関数が属する名前空間
    271     Smoothie::Temp::liveingNamespaceScopes = pUserProc->GetNamespaceScopes();
     274    namespaceSupporter.SetLivingNamespaceScopes( pUserProc->GetNamespaceScopes() );
    272275
    273276    // コンパイル中の関数でImportsされている名前空間
    274     Smoothie::Temp::importedNamespaces = pUserProc->GetImportedNamespaces();
     277    namespaceSupporter.SetImportedNamespaces( pUserProc->GetImportedNamespaces() );
    275278
    276279    if(pUserProc->IsSystem()){
     
    358361        Parameter &param = *pUserProc->RealParams()[i3];
    359362
    360         Variable *pVar = new Variable( param.GetVarName(), param, false, param.IsRef() );
     363        Variable *pVar = new VariableImpl( param.GetVarName(), param, false, param.IsRef() );
    361364
    362365        if( param.IsArray() ){
     
    479482        else{
    480483            if( pUserProc->ReturnType().IsObject() ){
    481                 sprintf(temporary,"%s=Nothing%c%c%s",temp,1,ESC_AS, pUserProc->ReturnType().ToString().c_str() );
     484                sprintf(temporary,"%s=Nothing%c%c%s",temp,1,ESC_AS, Compiler::TypeToString( pUserProc->ReturnType() ).c_str() );
    482485            }
    483486            else{
    484487                //戻り値用の変数の定義
    485                 sprintf(temporary,"%s%c%c%s",temp,1,ESC_AS, pUserProc->ReturnType().ToString().c_str() );
     488                sprintf(temporary,"%s%c%c%s",temp,1,ESC_AS, Compiler::TypeToString( pUserProc->ReturnType() ).c_str() );
    486489            }
    487490
  • trunk/abdev/BasicCompiler64/Compile_Statement.cpp

    r183 r198  
    136136    if(resultType.IsDouble()){
    137137        double dbl=0;
    138         offset=Compiler::GetNativeCode().GetDataTable().Add( dbl );
     138        offset=compiler.GetNativeCode().GetDataTable().Add( dbl );
    139139
    140140        //comisd xmm0,qword ptr[data table offset]
     
    150150    else if(resultType.IsSingle()){
    151151        float flt=0;
    152         offset=Compiler::GetNativeCode().GetDataTable().Add( flt );
     152        offset=compiler.GetNativeCode().GetDataTable().Add( flt );
    153153
    154154        //comiss xmm0,dword ptr[data table offset]
  • trunk/abdev/BasicCompiler64/Compile_Var.cpp

    r183 r198  
    55#include <CodeGenerator.h>
    66#include <Compiler.h>
     7#include <VariableImpl.h>
    78
    89#include "../BasicCompiler_Common/common.h"
     
    395396    // 名前空間を分離
    396397    char namespaceStr[VN_SIZE]="", simpleName[VN_SIZE];
    397     Smoothie::GetMeta().namespaceScopesCollection.SplitNamespace( variable, namespaceStr, simpleName );
     398    compiler.GetMeta().GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName );
    398399
    399400    // 先頭オブジェクトまたはクラス名と入れ子メンバに分割
     
    488489        //Const修飾子のメソッド内でメンバ書き込みアクセスが発生したとき
    489490        //(コンストラクタ、デストラクタ内を除く)
    490         const CMethod *pMethod = Smoothie::GetMeta().GetClasses().GetNowCompilingMethodInfo();
     491        const CMethod *pMethod = compiler.GetMeta().GetClasses().GetNowCompilingMethodInfo();
    491492        if( isWriteAccess &&
    492493            pMethod->IsConst() &&
     
    548549            }
    549550
    550             int typeDefIndex = Smoothie::GetMeta().typeDefs.GetIndex( VarName );
     551            int typeDefIndex = compiler.GetMeta().GetTypeDefs().GetIndex( VarName );
    551552            if( typeDefIndex != -1 ){
    552553                // TypeDef後の型名だったとき
    553                 lstrcpy( VarName, Smoothie::GetMeta().typeDefs[typeDefIndex].GetBaseName().c_str() );
     554                lstrcpy( VarName, compiler.GetMeta().GetTypeDefs()[typeDefIndex].GetBaseName().c_str() );
    554555            }
    555556
     
    851852            char *temp;
    852853            temp=(char *)i64data;
    853             i2=Compiler::GetNativeCode().GetDataTable().AddString( temp );
     854            i2=compiler.GetNativeCode().GetDataTable().AddString( temp );
    854855            HeapDefaultFree(temp);
    855856
     
    10011002            char *temp;
    10021003            temp=(char *)i64data;
    1003             i2=Compiler::GetNativeCode().GetDataTable().AddString( temp );
     1004            i2=compiler.GetNativeCode().GetDataTable().AddString( temp );
    10041005            HeapDefaultFree(temp);
    10051006
     
    10821083        bool isConst = ( dwFlags & DIMFLAG_CONST ) ? true:false;
    10831084
    1084         Variable *pVar = new Variable( VarName, type, isConst );
     1085        Variable *pVar = new VariableImpl( VarName, type, isConst );
    10851086
    10861087        if( SubScripts[0] != -1 ){
  • trunk/abdev/BasicCompiler64/MakePeHdr.cpp

    r193 r198  
    66#include <ClassImpl.h>
    77#include <Compiler.h>
     8#include <NamespaceSupporter.h>
    89
    910#include "../BasicCompiler_Common/common.h"
     
    125126    //////////////////
    126127    // データテーブル
    127     Compiler::GetNativeCode().GetDataTable().Init();
     128    compiler.GetNativeCode().GetDataTable().Init();
    128129    if(bDebugCompile){
    129         Compiler::GetNativeCode().GetDataTable().Add( (long)0x00000002 );
     130        compiler.GetNativeCode().GetDataTable().Add( (long)0x00000002 );
    130131    }
    131132
     
    151152
    152153    //関数ポインタ情報を初期化
    153     Smoothie::GetMeta().GetProcPointers().clear();
     154    compiler.GetMeta().GetProcPointers().clear();
    154155
    155156    // 名前空間情報を取得
    156     NamespaceScopesCollection::CollectNamespaces(
     157    NamespaceSupporter::CollectNamespaces(
    157158        Smoothie::Lexical::source.GetBuffer(),
    158         Smoothie::GetMeta().namespaceScopesCollection
     159        compiler.GetMeta().GetNamespaces()
    159160    );
    160161
     
    162163    //   GetSubInfo関数の中で参照されるオブジェクト名を事前に取得する。
    163164    //     ※オブジェクトの内容までは取得しない
    164     Smoothie::GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
     165    compiler.GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
    165166
    166167    //TypeDef情報を初期化
    167     Smoothie::GetMeta().typeDefs.Init();
     168    compiler.GetMeta().GetTypeDefs().Init();
    168169
    169170    //定数情報を取得
     
    175176
    176177    //クラス情報を取得(※注 - GetSubInfoの後に呼び出す)
    177     Smoothie::GetMeta().GetClasses().GetAllClassInfo();
    178 
    179     Smoothie::GetMeta().AutoWrite( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" );
     178    compiler.GetMeta().GetClasses().GetAllClassInfo();
     179
     180    compiler.GetMeta().AutoWrite( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" );
    180181
    181182    //コードと行番号の関係
     
    318319    if(!bDll){
    319320        // 名前空間が初期化されているかをチェック
    320         if( Smoothie::Temp::liveingNamespaceScopes.size() ){
     321        if( namespaceSupporter.GetLivingNamespaceScopes().size() ){
    321322            SetError();
    322323        }
     
    369370
    370371        //クラスに属する静的メンバを定義
    371         Smoothie::GetMeta().GetClasses().InitStaticMember();
     372        compiler.GetMeta().GetClasses().InitStaticMember();
    372373
    373374        //グローバル実行領域をコンパイル開始
     
    433434
    434435        // 名前空間が正しく閉じられているかをチェック
    435         if( Smoothie::Temp::liveingNamespaceScopes.size() ){
     436        if( namespaceSupporter.GetLivingNamespaceScopes().size() ){
    436437            SetError(63,NULL,-1);
    437438        }
     
    883884
    884885    //データセクションのファイル上のサイズ
    885     if(Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize()+(FILE_ALIGNMENT-Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT);
    886     else FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize();
     886    if(compiler.GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.GetNativeCode().GetDataTable().GetSize()+(FILE_ALIGNMENT-compiler.GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT);
     887    else FileSize_DataSection=compiler.GetNativeCode().GetDataTable().GetSize();
    887888    if(FileSize_DataSection) bUse_DataSection=1;
    888889    else bUse_DataSection=0;
     
    10731074    ////////////////////////////////////////
    10741075    //仮想関数データテーブルスケジュール
    1075     Smoothie::GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
     1076    compiler.GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
    10761077
    10771078
     
    16091610    if(bUse_DataSection){
    16101611        //データ テーブル
    1611         WriteFile(hFile,Compiler::GetNativeCode().GetDataTable().GetPtr(),Compiler::GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL);
     1612        WriteFile(hFile,compiler.GetNativeCode().GetDataTable().GetPtr(),compiler.GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL);
    16121613        i+=i2;
    16131614    }
     
    17211722
    17221723    //クラスに関するメモリを解放
    1723     Smoothie::GetMeta().GetClasses().Clear();
     1724    compiler.GetMeta().GetClasses().Clear();
    17241725}
  • trunk/abdev/BasicCompiler64/NumOpe.cpp

    r183 r198  
    2323        SetStringQuotes( parameter );
    2424
    25         Operator_New( *Smoothie::GetMeta().GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *Smoothie::GetMeta().GetClasses().GetStringClassPtr() ) );
     25        Operator_New( *compiler.GetMeta().GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.GetMeta().GetClasses().GetStringClassPtr() ) );
    2626
    2727        free( parameter );
     
    258258        Type leftType;
    259259        if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){
    260             if( isClassName == false && Smoothie::GetMeta().blittableTypes.IsExist( leftType ) ){
     260            if( isClassName == false && compiler.GetMeta().GetBlittableTypes().IsExist( leftType ) ){
    261261                // 左側のオブジェクト部分がBlittable型のとき
    262262
     
    264264                lstrcpy( temporary, termLeft );
    265265                sprintf( termLeft, "%s(%s)",
    266                     Smoothie::GetMeta().blittableTypes.Find( leftType ).GetCreateStaticMethodFullName().c_str(),
     266                    compiler.GetMeta().GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(),
    267267                    temporary );
    268268            }
     
    292292
    293293    if( pIsClassName ){
    294         if( Smoothie::GetMeta().GetClasses().Find( termFull ) ){
     294        if( compiler.GetMeta().GetClasses().Find( termFull ) ){
    295295            *pIsClassName = true;
    296296            return true;
     
    456456    ////////////////////////////////
    457457
    458     if( Type::StringToType( termFull, resultType ) ){
     458    if( Compiler::StringToType( termFull, resultType ) ){
    459459        resultType.SetBasicType( resultType.GetBasicType() | FLAG_CAST );
    460460        return true;
     
    593593        }
    594594
    595         i2 = Compiler::GetNativeCode().GetDataTable().AddBinary( binary, num * tempBaseType.GetSize() );
     595        i2 = compiler.GetNativeCode().GetDataTable().AddBinary( binary, num * tempBaseType.GetSize() );
    596596
    597597        //mov reg,i2
     
    742742                    // As演算子の右辺値
    743743                    //型名
    744                     if( Type::StringToType( term, resultType ) ){
     744                    if( Compiler::StringToType( term, resultType ) ){
    745745                        resultType.SetBasicType( resultType.GetBasicType() | FLAG_CAST );
    746746                    }
     
    773773
    774774                        type_stack[sp]=DEF_OBJECT;
    775                         index_stack[sp]=(LONG_PTR)Smoothie::GetMeta().GetClasses().GetStringClassPtr();
     775                        index_stack[sp]=(LONG_PTR)compiler.GetMeta().GetClasses().GetStringClassPtr();
    776776                        bLiteralCalculation=0;
    777777
     
    786786                    bLiteralCalculation=0;
    787787
    788                     i2 = Compiler::GetNativeCode().GetDataTable().AddString( term, i3 );
     788                    i2 = compiler.GetNativeCode().GetDataTable().AddString( term, i3 );
    789789
    790790                    //mov reg,i2
     
    882882                        }
    883883                        else{
    884                             index_stack[sp] = (LONG_PTR)Smoothie::GetMeta().GetClasses().GetObjectClassPtr();
     884                            index_stack[sp] = (LONG_PTR)compiler.GetMeta().GetClasses().GetObjectClassPtr();
    885885                        }
    886886
     
    971971                        }
    972972                        else{
    973                             i3 = Compiler::GetNativeCode().GetDataTable().Add( i64data );
     973                            i3 = compiler.GetNativeCode().GetDataTable().Add( i64data );
    974974
    975975                            //movlpd xmm_reg,qword ptr[data table offset]
     
    10001000                        }
    10011001                        else{
    1002                             i3=Compiler::GetNativeCode().GetDataTable().Add( i32data );
     1002                            i3=compiler.GetNativeCode().GetDataTable().Add( i32data );
    10031003
    10041004                            //movss xmm_reg,dword ptr[data table offset]
     
    11391139
    11401140            if(resultType.IsDouble()){
    1141                 i3 = Compiler::GetNativeCode().GetDataTable().Add( i64data );
     1141                i3 = compiler.GetNativeCode().GetDataTable().Add( i64data );
    11421142
    11431143                //movlpd xmm_reg,qword ptr[data table offset]
     
    11591159                memcpy(&i32data,&flt,sizeof(long));
    11601160
    1161                 i3 = Compiler::GetNativeCode().GetDataTable().Add( i32data );
     1161                i3 = compiler.GetNativeCode().GetDataTable().Add( i32data );
    11621162
    11631163                //movss xmm_reg,dword ptr[data table offset]
  • trunk/abdev/BasicCompiler64/NumOpe_Arithmetic.cpp

    r183 r198  
    454454        double dbl;
    455455        dbl=-1;
    456         i32data = Compiler::GetNativeCode().GetDataTable().Add( dbl );
     456        i32data = compiler.GetNativeCode().GetDataTable().Add( dbl );
    457457
    458458        //mulsd xmm_reg,qword ptr[data table offset]   ※data = -1
     
    476476        float flt;
    477477        flt=-1;
    478         i32data = Compiler::GetNativeCode().GetDataTable().Add( flt );
     478        i32data = compiler.GetNativeCode().GetDataTable().Add( flt );
    479479
    480480        //mulss xmm_reg,dword ptr[data table offset]   ※data = -1
  • trunk/abdev/BasicCompiler64/NumOpe_TypeOperation.cpp

    r183 r198  
    8989            int temp;
    9090            _int64 i64data=0x43f0000000000000;
    91             temp=Compiler::GetNativeCode().GetDataTable().Add( i64data );
     91            temp=compiler.GetNativeCode().GetDataTable().Add( i64data );
    9292            OpBuffer[obp++]=(char)0xF2;
    9393            OpBuffer[obp++]=(char)0x0F;
     
    148148            int temp;
    149149            long i32data=0x5f800000;
    150             temp=Compiler::GetNativeCode().GetDataTable().Add( i32data );
     150            temp=compiler.GetNativeCode().GetDataTable().Add( i32data );
    151151            OpBuffer[obp++]=(char)0xF3;
    152152            OpBuffer[obp++]=(char)0x0F;
Note: See TracChangeset for help on using the changeset viewer.