Changeset 256 in dev for trunk/abdev/BasicCompiler32/MakePeHdr.cpp
- Timestamp:
- Aug 1, 2007, 11:19:01 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/MakePeHdr.cpp
r253 r256 146 146 ////////////////// 147 147 // データテーブル 148 compiler. GetDataTable().Init();148 compiler.objectModule.dataTable.Clear(); 149 149 if(bDebugCompile){ 150 compiler. GetDataTable().Add( (long)0x00000002 );150 compiler.objectModule.dataTable.Add( (long)0x00000002 ); 151 151 } 152 152 … … 172 172 173 173 //関数ポインタ情報を初期化 174 compiler. GetMeta().GetProcPointers().clear();174 compiler.objectModule.meta.GetProcPointers().clear(); 175 175 176 176 // 名前空間情報を取得 177 177 NamespaceSupporter::CollectNamespaces( 178 178 Smoothie::Lexical::source.GetBuffer(), 179 compiler. GetMeta().GetNamespaces()179 compiler.objectModule.meta.GetNamespaces() 180 180 ); 181 181 … … 183 183 // CollectProcedures関数の中で参照されるオブジェクト名を事前に取得する。 184 184 // ※オブジェクトの内容までは取得しない 185 compiler. GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );185 compiler.objectModule.meta.GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source ); 186 186 187 187 //TypeDef情報を初期化 188 compiler. GetMeta().GetTypeDefs().Init();188 compiler.objectModule.meta.GetTypeDefs().Init(); 189 189 190 190 //定数情報を取得 … … 195 195 CollectProcedures( 196 196 Smoothie::Lexical::source, 197 compiler. GetMeta().GetUserProcs(),198 compiler. GetMeta().GetDllProcs()197 compiler.objectModule.meta.GetUserProcs(), 198 compiler.objectModule.meta.GetDllProcs() 199 199 ); 200 200 201 201 // クラス情報を取得(※注 - CollectProceduresの後に呼び出す) 202 compiler. GetMeta().GetClasses().GetAllClassInfo();202 compiler.objectModule.meta.GetClasses().GetAllClassInfo(); 203 203 204 204 // サブルーチン(ユーザー定義、DLL関数)のイテレータの準備 205 compiler. GetMeta().GetUserProcs().Iterator_Init();206 compiler. GetMeta().GetDllProcs().Iterator_Init();205 compiler.objectModule.meta.GetUserProcs().Iterator_Init(); 206 compiler.objectModule.meta.GetDllProcs().Iterator_Init(); 207 207 208 208 /* 209 if( !compiler. GetMeta().WriteXml( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) )209 if( !compiler.objectModule.WriteXml( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) ) 210 210 { 211 211 MessageBox(0,"XML書き込みに失敗","test",0); 212 212 } 213 MetaImpl *pTempMeta = new MetaImpl();214 if( !pTemp Meta->ReadXml( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) )213 ObjectModule *pTempObjectModule = new ObjectModule(); 214 if( !pTempObjectModule->ReadXml( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) ) 215 215 { 216 216 MessageBox(0,"XML読み込みに失敗","test",0); 217 217 } 218 218 219 if( !compiler. GetMeta().WriteBinaly( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )219 if( !compiler.objectModule.meta.WriteBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) ) 220 220 { 221 221 MessageBox(0,"バイナリ書き込みに失敗","test",0); 222 222 } 223 Meta Impl *pTempMeta = new MetaImpl();224 if( !pTempMeta->ReadBina ly( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )223 Meta *pTempMeta = new Meta(); 224 if( !pTempMeta->ReadBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) ) 225 225 { 226 226 MessageBox(0,"バイナリ読み込みに失敗","test",0); 227 227 } 228 if( !compiler. GetMeta().WriteText( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )228 if( !compiler.objectModule.meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) ) 229 229 { 230 230 MessageBox(0,"バイナリ書き込みに失敗","test",0); 231 231 } 232 Meta Impl *pTempMeta = new MetaImpl();233 if( !pTempMeta->ReadText( Jenga::Common::Environment::GetAppDir() + "\\ meta_test.dat" ) )232 Meta *pTempMeta = new Meta(); 233 if( !pTempMeta->ReadText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) ) 234 234 { 235 235 MessageBox(0,"バイナリ読み込みに失敗","test",0); 236 236 } 237 compiler. GetMeta() = (*pTempMeta);*/237 compiler.objectModule = (*pTempObjectModule);*/ 238 238 239 239 … … 436 436 437 437 // コード生成対象を選択 438 compiler.codeGenerator.Select( compiler. globalNativeCode );438 compiler.codeGenerator.Select( compiler.objectModule.globalNativeCode ); 439 439 440 440 trace_for_sourcecodestep( "★★★ グローバル領域のコンパイルを開始" ); … … 461 461 462 462 //クラスに属する静的メンバを定義 463 compiler. GetMeta().GetClasses().InitStaticMember();463 compiler.objectModule.meta.GetClasses().InitStaticMember(); 464 464 465 465 //グローバル実行領域をコンパイル開始 … … 550 550 551 551 552 trace( "コード生成が終了しました。" ); 553 554 555 /* 556 int t,t2; 557 t=GetTickCount(); 558 if( !compiler.objectModule.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) ) 559 { 560 MessageBox(0,"XML書き込みに失敗","test",0); 561 } 562 if( !compiler.objectModule.ReadText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) ) 563 { 564 MessageBox(0,"XML読み込みに失敗","test",0); 565 } 566 t2=GetTickCount(); 567 t2-=t; 568 char s[100]; 569 sprintf(s,"%d",t2); 570 MessageBox(0,s,"test",0); 571 572 if( !compiler.objectModule.meta.WriteBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) ) 573 { 574 MessageBox(0,"バイナリ書き込みに失敗","test",0); 575 } 576 Meta *pTempMeta = new Meta(); 577 if( !pTempMeta->ReadBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) ) 578 { 579 MessageBox(0,"バイナリ読み込みに失敗","test",0); 580 } 581 if( !compiler.objectModule.meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) ) 582 { 583 MessageBox(0,"バイナリ書き込みに失敗","test",0); 584 } 585 Meta *pTempMeta = new Meta(); 586 if( !pTempMeta->ReadText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) ) 587 { 588 MessageBox(0,"バイナリ読み込みに失敗","test",0); 589 }*/ 590 591 552 592 553 593 //////////////////////////////// … … 561 601 // 使用するDLL関数のチェック 562 602 //////////////////////////////// 563 compiler. GetMeta().GetDllProcs().Iterator_Reset();564 while( compiler. GetMeta().GetDllProcs().Iterator_HasNext() )603 compiler.objectModule.meta.GetDllProcs().Iterator_Reset(); 604 while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() ) 565 605 { 566 const DllProc *pDllProc = compiler. GetMeta().GetDllProcs().Iterator_GetNext();606 const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext(); 567 607 568 608 if( !pDllProc->IsUsing() ){ … … 634 674 //辞書順にサーチ 635 675 temporary[0]=0; 636 compiler. GetMeta().GetUserProcs().Iterator_Reset();637 while( compiler. GetMeta().GetUserProcs().Iterator_HasNext() )676 compiler.objectModule.meta.GetUserProcs().Iterator_Reset(); 677 while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() ) 638 678 { 639 pUserProc = compiler. GetMeta().GetUserProcs().Iterator_GetNext();679 pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext(); 640 680 if(pUserProc->IsExport()){ 641 681 if(temporary[0]=='\0'){ … … 724 764 int ImportDllNum=0; 725 765 726 compiler. GetMeta().GetDllProcs().Iterator_Reset();727 while( compiler. GetMeta().GetDllProcs().Iterator_HasNext() )766 compiler.objectModule.meta.GetDllProcs().Iterator_Reset(); 767 while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() ) 728 768 { 729 const DllProc *pDllProc = compiler. GetMeta().GetDllProcs().Iterator_GetNext();769 const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext(); 730 770 731 771 if( !pDllProc->IsUsing() ){ … … 764 804 pImportTable[i].Name=i3+i*0x10; 765 805 766 compiler. GetMeta().GetDllProcs().Iterator_Reset();767 while( compiler. GetMeta().GetDllProcs().Iterator_HasNext() )806 compiler.objectModule.meta.GetDllProcs().Iterator_Reset(); 807 while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() ) 768 808 { 769 const DllProc *pDllProc = compiler. GetMeta().GetDllProcs().Iterator_GetNext();809 const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext(); 770 810 771 811 if( !pDllProc->IsUsing() ){ … … 793 833 i3+=ImportDllNum*0x10; 794 834 for(i=0,i5=0;i<ImportDllNum;i++){ 795 compiler. GetMeta().GetDllProcs().Iterator_Reset();796 while( compiler. GetMeta().GetDllProcs().Iterator_HasNext() )835 compiler.objectModule.meta.GetDllProcs().Iterator_Reset(); 836 while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() ) 797 837 { 798 DllProc *pDllProc = compiler. GetMeta().GetDllProcs().Iterator_GetNext();838 DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext(); 799 839 800 840 if( !pDllProc->IsUsing() ){ … … 839 879 //(デバッグ情報で利用される) 840 880 extern int AllInitGlobalVarSize; 841 BOOST_FOREACH( Variable *pVar, compiler. GetMeta().GetGlobalVars() ){881 BOOST_FOREACH( Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){ 842 882 if(pVar->GetOffsetAddress()&0x80000000){ 843 883 pVar->SetOffsetAddress( (pVar->GetOffsetAddress()&0x7FFFFFFF)+AllInitGlobalVarSize ); … … 921 961 922 962 //データセクションのファイル上のサイズ 923 if(compiler. GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.GetDataTable().GetSize()+(FILE_ALIGNMENT-compiler.GetDataTable().GetSize()%FILE_ALIGNMENT);924 else FileSize_DataSection=compiler. GetDataTable().GetSize();963 if(compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.objectModule.dataTable.GetSize()+(FILE_ALIGNMENT-compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT); 964 else FileSize_DataSection=compiler.objectModule.dataTable.GetSize(); 925 965 if(FileSize_DataSection) bUse_DataSection=1; 926 966 else bUse_DataSection=0; … … 1084 1124 HintSize; //ヒント名(関数名)テーブル 1085 1125 1086 compiler. GetMeta().GetDllProcs().Iterator_Reset();1087 while( compiler. GetMeta().GetDllProcs().Iterator_HasNext() )1126 compiler.objectModule.meta.GetDllProcs().Iterator_Reset(); 1127 while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() ) 1088 1128 { 1089 const DllProc *pDllProc = compiler. GetMeta().GetDllProcs().Iterator_GetNext();1129 const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext(); 1090 1130 1091 1131 if( !pDllProc->IsUsing() ){ … … 1105 1145 //////////////////////////////////////// 1106 1146 //仮想関数データテーブルスケジュール 1107 compiler. GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);1147 compiler.objectModule.meta.GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection); 1108 1148 1109 1149 … … 1640 1680 if(bUse_DataSection){ 1641 1681 //データ テーブル 1642 WriteFile(hFile,compiler. GetDataTable().GetPtr(),compiler.GetDataTable().GetSize(),(DWORD *)&i2,NULL);1682 WriteFile(hFile,compiler.objectModule.dataTable.GetPtr(),compiler.objectModule.dataTable.GetSize(),(DWORD *)&i2,NULL); 1643 1683 i+=i2; 1644 1684 } … … 1752 1792 1753 1793 //クラスに関するメモリを解放 1754 compiler. GetMeta().GetClasses().Clear();1794 compiler.objectModule.meta.GetClasses().Clear(); 1755 1795 }
Note:
See TracChangeset
for help on using the changeset viewer.