Changeset 288 in dev for trunk/abdev/BasicCompiler32


Ignore:
Timestamp:
Aug 17, 2007, 7:36:51 AM (17 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev/BasicCompiler32
Files:
4 edited

Legend:

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

    r287 r288  
    12521252                    RelativePath="..\BasicCompiler_Common\src\BoostSerializationSupport.cpp"
    12531253                    >
     1254                    <FileConfiguration
     1255                        Name="Debug|Win32"
     1256                        >
     1257                        <Tool
     1258                            Name="VCCLCompilerTool"
     1259                            UsePrecompiledHeader="0"
     1260                        />
     1261                    </FileConfiguration>
     1262                    <FileConfiguration
     1263                        Name="Release|Win32"
     1264                        >
     1265                        <Tool
     1266                            Name="VCCLCompilerTool"
     1267                            UsePrecompiledHeader="0"
     1268                        />
     1269                    </FileConfiguration>
    12541270                </File>
    12551271            </Filter>
  • trunk/abdev/BasicCompiler32/Compile_Var.cpp

    r276 r288  
    716716
    717717bool SetInitGlobalData(int offset,const Type &type,const Subscripts &subscripts,const char *lpszInitBuf){
    718     extern BYTE *initGlobalBuf;
    719718    int i2,i3;
    720719    char temporary[VN_SIZE];
     
    820819
    821820    if( type.IsDouble() ){
    822         *(double *)(initGlobalBuf+offset)=(double)dbl;
     821        compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.Overwrite(
     822            offset,
     823            (const char *)&dbl,
     824            sizeof(double)
     825        );
    823826    }
    824827    else if( type.IsSingle() ){
    825         *(float *)(initGlobalBuf+offset)=(float)dbl;
     828        float flt = (float)dbl;
     829        compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.Overwrite(
     830            offset,
     831            (const char *)&flt,
     832            sizeof(float)
     833        );
    826834    }
    827835    else if( type.Is64() ){
    828         *(_int64 *)(initGlobalBuf+offset)=i64data;
     836        compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.Overwrite(
     837            offset,
     838            (const char *)&i64data,
     839            sizeof(_int64)
     840        );
    829841    }
    830842    else if( type.IsLong() || type.IsDWord() || type.IsPointer() ){
     
    844856        }
    845857        else{
    846             *(DWORD *)(initGlobalBuf+offset)=(DWORD)i64data;
     858            long l = (long)i64data;
     859            compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.Overwrite(
     860                offset,
     861                (const char *)&l,
     862                sizeof(long)
     863            );
    847864        }
    848865    }
    849866    else if( type.IsWord() || type.IsInteger() ){
    850         *(WORD *)(initGlobalBuf+offset)=(WORD)i64data;
     867        short s = (short)i64data;
     868        compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.Overwrite(
     869            offset,
     870            (const char *)&s,
     871            sizeof(short)
     872        );
    851873    }
    852874    else if( type.IsSByte() || type.IsByte() || type.IsBoolean() ){
    853         *(BYTE *)(initGlobalBuf+offset)=(BYTE)i64data;
     875        char c = (char)i64data;
     876        compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.Overwrite(
     877            offset,
     878            (const char *)&c,
     879            sizeof(char)
     880        );
    854881    }
    855882
     
    10931120                // 呼び出し側のオフセットズレを考慮する
    10941121
    1095                 if( 0 == ( UserProc::CompilingUserProc().RealParams().GetMemorySize() + PTR_SIZE/*ret分*/ ) % alignment ){
     1122                if( 0 == ( UserProc::CompilingUserProc().RealParams().GetMemorySize() + PTR_SIZE /* ret分 */ ) % alignment ){
    10961123                    AllLocalVarSize += PTR_SIZE;
    10971124                }
  • trunk/abdev/BasicCompiler32/MakePeHdr.cpp

    r287 r288  
    323323
    324324
    325     //グローバル変数の初期バッファ
    326     extern BYTE *initGlobalBuf;
    327     initGlobalBuf=(BYTE *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,1);
    328 
    329325    //リロケーション情報
    330326    pobj_Reloc=new CReloc();
     
    401397        InitGCVariables();
    402398
    403         if( compiler.IsStaticLibrary() ){
     399        if( compiler.IsStaticLibrary() )
     400        {
    404401            //_System_StartupProgramの呼び出し
    405402            compiler.codeGenerator.op_call(pSub_System_StartupProgram);
     
    812809            pVar->SetOffsetAddress(
    813810                (pVar->GetOffsetAddress()&0x7FFFFFFF)
    814                 + compiler.GetObjectModule().meta.GetGlobalVars().GetAllInitSize()
     811                + compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize()
    815812            );
    816813        }
     
    885882
    886883    //リライタブルセクションのファイル上のサイズ(グローバル変数の初期情報のみを格納)
    887     if( compiler.GetObjectModule().meta.GetGlobalVars().GetAllInitSize() % FILE_ALIGNMENT )
     884    if( compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize() % FILE_ALIGNMENT )
    888885    {
    889886        FileSize_RWSection =
    890             compiler.GetObjectModule().meta.GetGlobalVars().GetAllInitSize()
    891             + (FILE_ALIGNMENT-compiler.GetObjectModule().meta.GetGlobalVars().GetAllInitSize()%FILE_ALIGNMENT);
     887            compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize()
     888            + (FILE_ALIGNMENT-compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize()%FILE_ALIGNMENT);
    892889    }
    893890    else{
    894         if( compiler.GetObjectModule().meta.GetGlobalVars().GetAllInitSize() )
     891        if( compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize() )
    895892        {
    896             FileSize_RWSection = compiler.GetObjectModule().meta.GetGlobalVars().GetAllInitSize();
     893            FileSize_RWSection = compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize();
    897894        }
    898895        else FileSize_RWSection=FILE_ALIGNMENT;
     
    957954
    958955    //リライタブルセクションのメモリ上のサイズ
    959     i = compiler.GetObjectModule().meta.GetGlobalVars().GetAllInitSize()
     956    i = compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize()
    960957        + compiler.GetObjectModule().meta.GetGlobalVars().GetAllSize();
    961958    if(i%MEM_ALIGNMENT) MemSize_RWSection=i+(MEM_ALIGNMENT-i%MEM_ALIGNMENT);
     
    13441341    memset((char *)RWSectionHeader.Name,0,IMAGE_SIZEOF_SHORT_NAME);
    13451342    lstrcpy((char *)RWSectionHeader.Name,".data");
    1346     RWSectionHeader.Misc.VirtualSize=           compiler.GetObjectModule().meta.GetGlobalVars().GetAllInitSize()
     1343    RWSectionHeader.Misc.VirtualSize=           compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize()
    13471344                                                + compiler.GetObjectModule().meta.GetGlobalVars().GetAllSize();
    13481345    RWSectionHeader.VirtualAddress=             MemPos_RWSection;
     
    15641561    if(bUse_RWSection){
    15651562        //リライタブル データ テーブル(グローバル変数の初期バッファ)
    1566         initGlobalBuf=(BYTE *)HeapReAlloc(hHeap,
    1567             HEAP_ZERO_MEMORY,
    1568             initGlobalBuf,
    1569             FileSize_RWSection);
    1570         WriteFile(hFile,initGlobalBuf,FileSize_RWSection,(DWORD *)&i2,NULL);
    1571         i+=i2;
     1563
     1564        char *temp = (char *)calloc( FileSize_RWSection, 1 );
     1565        memcpy(
     1566            temp,
     1567            compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetBuffer(),
     1568            compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize()
     1569        );
     1570
     1571        WriteFile(hFile,temp,FileSize_RWSection,(DWORD *)&i2,NULL);
     1572        i+=i2;
     1573
     1574        free( temp );
    15721575    }
    15731576
     
    16441647    HeapDefaultFree(pHintTable);
    16451648
    1646     //グローバル変数の初期バッファを解放
    1647     HeapDefaultFree(initGlobalBuf);
    1648 
    16491649    //リソースセクションバッファを解放
    16501650    HeapDefaultFree(RSrcSectionBuffer);
  • trunk/abdev/BasicCompiler32/stdafx.h

    r218 r288  
    1818
    1919#include "../BasicCompiler_Common/common.h"
     20
     21#include <Compiler.h>
Note: See TracChangeset for help on using the changeset viewer.