Changeset 56 in dev for BasicCompiler64


Ignore:
Timestamp:
Feb 15, 2007, 3:39:40 AM (17 years ago)
Author:
dai_9181
Message:

・[Unicode]リテラル文字列のスイッチング
・[Unicode]Char型を文字型として扱うようにする
・[Unicode]SByte型を追加する
に対応。

/unicodeコマンドオプションに対応。

Location:
BasicCompiler64
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/BasicCompiler.vcproj

    r50 r56  
    152152                Optimization="2"
    153153                InlineFunctionExpansion="1"
     154                AdditionalIncludeDirectories="..\cpplibs\boost;..\cpplibs\Base"
    154155                PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;JPN;_AMD64_;_WIN64"
    155156                StringPooling="true"
     
    252253                Optimization="2"
    253254                InlineFunctionExpansion="1"
     255                AdditionalIncludeDirectories="..\cpplibs\boost;..\cpplibs\Base"
    254256                PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;ENG"
    255257                StringPooling="true"
     
    346348                Name="VCCLCompilerTool"
    347349                Optimization="2"
     350                AdditionalIncludeDirectories="..\cpplibs\boost;..\cpplibs\Base"
    348351                PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;JPN;_AMD64_;_WIN64"
    349352                MinimalRebuild="false"
     
    14031406                    >
    14041407                    <File
     1408                        RelativePath="..\BasicCompiler_Common\DataTable.cpp"
     1409                        >
     1410                    </File>
     1411                    <File
    14051412                        RelativePath="..\BasicCompiler_Common\LoopRefCheck.cpp"
    14061413                        >
  • BasicCompiler64/Compile_Statement.cpp

    r52 r56  
    123123    if(type==DEF_DOUBLE){
    124124        double dbl=0;
    125         offset=AddDataTable((char *)&dbl,sizeof(double));
     125        offset=dataTable.Add( dbl );
    126126
    127127        //comisd xmm0,qword ptr[data table offset]
     
    137137    else if(type==DEF_SINGLE){
    138138        float flt=0;
    139         offset=AddDataTable((char *)&flt,sizeof(float));
     139        offset=dataTable.Add( flt );
    140140
    141141        //comiss xmm0,dword ptr[data table offset]
  • BasicCompiler64/Compile_Var.cpp

    r55 r56  
    888888            char *temp;
    889889            temp=(char *)i64data;
    890             i2=AddDataTable(temp,lstrlen(temp));
     890            i2=dataTable.AddString( temp );
    891891            HeapDefaultFree(temp);
    892892
     
    10371037            char *temp;
    10381038            temp=(char *)i64data;
    1039             i2=AddDataTable(temp,lstrlen(temp));
     1039            i2=dataTable.AddString( temp );
    10401040            HeapDefaultFree(temp);
    10411041
  • BasicCompiler64/MakePeHdr.cpp

    r51 r56  
    6565    bUse_DebugSection;
    6666
    67 int AddDataTable(char *buffer,int length){
    68     extern HANDLE hHeap;
    69     extern char *DataTable;
    70     extern int DataTableSize;
    71     int RetNum;
    72 
    73     DataTable=(char *)HeapReAlloc(hHeap,0,DataTable,DataTableSize+length+1);
    74     memcpy(DataTable+DataTableSize,buffer,length);
    75     DataTable[DataTableSize+length]=0;
    76 
    77     RetNum=DataTableSize; //ImageBase+MemPos_DataSectionが後に足される
    78 
    79     DataTableSize+=length+1;
    80 
    81     return RetNum;
    82 }
    83 
    8467
    8568void DebugVariable(void){
     
    124107    //////////////////
    125108    // データテーブル
    126     extern char *DataTable;
    127     extern int DataTableSize;
     109    dataTable.Init();
    128110    if(bDebugCompile){
    129         DataTable=(char *)HeapAlloc(hHeap,0,2);
    130         DataTable[0]=2;
    131         DataTable[1]=0;
    132         DataTableSize=2;
    133     }
    134     else{
    135         DataTable=(char *)HeapAlloc(hHeap,0,1);
    136         DataTableSize=0;
     111        dataTable.Add( (long)0x00000002 );
    137112    }
    138113
     
    841816
    842817    //データセクションのファイル上のサイズ
    843     if(DataTableSize%FILE_ALIGNMENT) FileSize_DataSection=DataTableSize+(FILE_ALIGNMENT-DataTableSize%FILE_ALIGNMENT);
    844     else FileSize_DataSection=DataTableSize;
     818    if(dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=dataTable.GetSize()+(FILE_ALIGNMENT-dataTable.GetSize()%FILE_ALIGNMENT);
     819    else FileSize_DataSection=dataTable.GetSize();
    845820    if(FileSize_DataSection) bUse_DataSection=1;
    846821    else bUse_DataSection=0;
     
    15771552    if(bUse_DataSection){
    15781553        //データ テーブル
    1579         WriteFile(hFile,DataTable,DataTableSize,(DWORD *)&i2,NULL);
     1554        WriteFile(hFile,dataTable.GetPtr(),dataTable.GetSize(),(DWORD *)&i2,NULL);
    15801555        i+=i2;
    15811556    }
     
    16691644    HeapDefaultFree(pHintTable);
    16701645
    1671     //データテーブルに関する情報を解放
    1672     HeapDefaultFree(DataTable);
    1673 
    16741646    //グローバル変数の初期バッファを解放
    16751647    HeapDefaultFree(initGlobalBuf);
  • BasicCompiler64/NumOpe.cpp

    r51 r56  
    3737        op_call(pobj_StringClass->GetConstructorMethod()->psi);
    3838
    39         int i2;
    40         i2=AddDataTable(lpszText,lstrlen(lpszText));
     39        // TODO: Ex表記による文字列長に対応する
     40        int i2 = dataTable.AddString( lpszText );
    4141
    4242        //mov rax,i2
     
    269269                    bLiteralCalculation=0;
    270270
    271                     i2=AddDataTable(term,i3);
     271                    i2 = dataTable.AddString( term, i3 );
    272272
    273273                    //mov reg,i2
     
    622622                        }
    623623                        else{
    624                             i3=AddDataTable((char *)&i64data,sizeof(_int64));
     624                            i3 = dataTable.Add( i64data );
    625625
    626626                            //movlpd xmm_reg,qword ptr[data table offset]
     
    650650                        }
    651651                        else{
    652                             i3=AddDataTable((char *)&i32data,sizeof(long));
     652                            i3=dataTable.Add( i32data );
    653653
    654654                            //movss xmm_reg,dword ptr[data table offset]
     
    789789
    790790            if(i2==DEF_DOUBLE){
    791                 i3=AddDataTable((char *)&i64data,sizeof(_int64));
     791                i3 = dataTable.Add( i64data );
    792792
    793793                //movlpd xmm_reg,qword ptr[data table offset]
     
    809809                memcpy(&i32data,&flt,sizeof(long));
    810810
    811                 i3=AddDataTable((char *)&i32data,sizeof(long));
     811                i3 = dataTable.Add( i32data );
    812812
    813813                //movss xmm_reg,dword ptr[data table offset]
  • BasicCompiler64/NumOpe_Arithmetic.cpp

    r19 r56  
    452452        double dbl;
    453453        dbl=-1;
    454         i32data=AddDataTable((char *)&dbl,sizeof(double));
     454        i32data = dataTable.Add( dbl );
    455455
    456456        //mulsd xmm_reg,qword ptr[data table offset]   ※data = -1
     
    474474        float flt;
    475475        flt=-1;
    476         i32data=AddDataTable((char *)&flt,sizeof(float));
     476        i32data = dataTable.Add( flt );
    477477
    478478        //mulss xmm_reg,dword ptr[data table offset]   ※data = -1
  • BasicCompiler64/NumOpe_TypeOperation.cpp

    r55 r56  
    8585            int temp;
    8686            _int64 i64data=0x43f0000000000000;
    87             temp=AddDataTable((char *)&i64data,sizeof(_int64));
     87            temp=dataTable.Add( i64data );
    8888            OpBuffer[obp++]=(char)0xF2;
    8989            OpBuffer[obp++]=(char)0x0F;
     
    144144            int temp;
    145145            long i32data=0x5f800000;
    146             temp=AddDataTable((char *)&i32data,sizeof(long));
     146            temp=dataTable.Add( i32data );
    147147            OpBuffer[obp++]=(char)0xF3;
    148148            OpBuffer[obp++]=(char)0x0F;
  • BasicCompiler64/Opcode.h

    r50 r56  
    229229
    230230
    231 
    232 //MakePeHdr.cpp
    233 int AddDataTable(char *buffer,int length);
    234231
    235232//RSrcSection.cpp
Note: See TracChangeset for help on using the changeset viewer.