Changeset 288 in dev for trunk/abdev/BasicCompiler32
- Timestamp:
- Aug 17, 2007, 7:36:51 AM (17 years ago)
- Location:
- trunk/abdev/BasicCompiler32
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/BasicCompiler.vcproj
r287 r288 1252 1252 RelativePath="..\BasicCompiler_Common\src\BoostSerializationSupport.cpp" 1253 1253 > 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> 1254 1270 </File> 1255 1271 </Filter> -
trunk/abdev/BasicCompiler32/Compile_Var.cpp
r276 r288 716 716 717 717 bool SetInitGlobalData(int offset,const Type &type,const Subscripts &subscripts,const char *lpszInitBuf){ 718 extern BYTE *initGlobalBuf;719 718 int i2,i3; 720 719 char temporary[VN_SIZE]; … … 820 819 821 820 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 ); 823 826 } 824 827 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 ); 826 834 } 827 835 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 ); 829 841 } 830 842 else if( type.IsLong() || type.IsDWord() || type.IsPointer() ){ … … 844 856 } 845 857 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 ); 847 864 } 848 865 } 849 866 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 ); 851 873 } 852 874 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 ); 854 881 } 855 882 … … 1093 1120 // 呼び出し側のオフセットズレを考慮する 1094 1121 1095 if( 0 == ( UserProc::CompilingUserProc().RealParams().GetMemorySize() + PTR_SIZE /*ret分*/ ) % alignment ){1122 if( 0 == ( UserProc::CompilingUserProc().RealParams().GetMemorySize() + PTR_SIZE /* ret分 */ ) % alignment ){ 1096 1123 AllLocalVarSize += PTR_SIZE; 1097 1124 } -
trunk/abdev/BasicCompiler32/MakePeHdr.cpp
r287 r288 323 323 324 324 325 //グローバル変数の初期バッファ326 extern BYTE *initGlobalBuf;327 initGlobalBuf=(BYTE *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,1);328 329 325 //リロケーション情報 330 326 pobj_Reloc=new CReloc(); … … 401 397 InitGCVariables(); 402 398 403 if( compiler.IsStaticLibrary() ){ 399 if( compiler.IsStaticLibrary() ) 400 { 404 401 //_System_StartupProgramの呼び出し 405 402 compiler.codeGenerator.op_call(pSub_System_StartupProgram); … … 812 809 pVar->SetOffsetAddress( 813 810 (pVar->GetOffsetAddress()&0x7FFFFFFF) 814 + compiler.GetObjectModule().meta.GetGlobalVars(). GetAllInitSize()811 + compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize() 815 812 ); 816 813 } … … 885 882 886 883 //リライタブルセクションのファイル上のサイズ(グローバル変数の初期情報のみを格納) 887 if( compiler.GetObjectModule().meta.GetGlobalVars(). GetAllInitSize() % FILE_ALIGNMENT )884 if( compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize() % FILE_ALIGNMENT ) 888 885 { 889 886 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); 892 889 } 893 890 else{ 894 if( compiler.GetObjectModule().meta.GetGlobalVars(). GetAllInitSize() )891 if( compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize() ) 895 892 { 896 FileSize_RWSection = compiler.GetObjectModule().meta.GetGlobalVars(). GetAllInitSize();893 FileSize_RWSection = compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize(); 897 894 } 898 895 else FileSize_RWSection=FILE_ALIGNMENT; … … 957 954 958 955 //リライタブルセクションのメモリ上のサイズ 959 i = compiler.GetObjectModule().meta.GetGlobalVars(). GetAllInitSize()956 i = compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize() 960 957 + compiler.GetObjectModule().meta.GetGlobalVars().GetAllSize(); 961 958 if(i%MEM_ALIGNMENT) MemSize_RWSection=i+(MEM_ALIGNMENT-i%MEM_ALIGNMENT); … … 1344 1341 memset((char *)RWSectionHeader.Name,0,IMAGE_SIZEOF_SHORT_NAME); 1345 1342 lstrcpy((char *)RWSectionHeader.Name,".data"); 1346 RWSectionHeader.Misc.VirtualSize= compiler.GetObjectModule().meta.GetGlobalVars(). GetAllInitSize()1343 RWSectionHeader.Misc.VirtualSize= compiler.GetObjectModule().meta.GetGlobalVars().initAreaBuffer.GetSize() 1347 1344 + compiler.GetObjectModule().meta.GetGlobalVars().GetAllSize(); 1348 1345 RWSectionHeader.VirtualAddress= MemPos_RWSection; … … 1564 1561 if(bUse_RWSection){ 1565 1562 //リライタブル データ テーブル(グローバル変数の初期バッファ) 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 ); 1572 1575 } 1573 1576 … … 1644 1647 HeapDefaultFree(pHintTable); 1645 1648 1646 //グローバル変数の初期バッファを解放1647 HeapDefaultFree(initGlobalBuf);1648 1649 1649 //リソースセクションバッファを解放 1650 1650 HeapDefaultFree(RSrcSectionBuffer); -
trunk/abdev/BasicCompiler32/stdafx.h
r218 r288 18 18 19 19 #include "../BasicCompiler_Common/common.h" 20 21 #include <Compiler.h>
Note:
See TracChangeset
for help on using the changeset viewer.