Changeset 266 in dev for trunk/abdev/BasicCompiler64
- Timestamp:
- Aug 7, 2007, 4:14:06 AM (17 years ago)
- Location:
- trunk/abdev/BasicCompiler64
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/BasicCompiler.vcproj
r257 r266 388 388 </File> 389 389 <File 390 RelativePath="..\BasicCompiler_Common\include\Source.h" 391 > 392 </File> 393 <File 390 394 RelativePath="..\BasicCompiler_Common\include\Symbol.h" 391 395 > … … 1180 1184 </File> 1181 1185 <File 1186 RelativePath="..\BasicCompiler_Common\src\Source.cpp" 1187 > 1188 </File> 1189 <File 1182 1190 RelativePath="..\BasicCompiler_Common\src\Symbol.cpp" 1183 1191 > -
trunk/abdev/BasicCompiler64/Compile_Calc.cpp
r257 r266 96 96 } 97 97 else{ 98 if( compiler. objectModule.meta.GetGlobalConsts().IsExist(variable)99 || compiler. objectModule.meta.GetGlobalConstMacros().IsExist(variable) )98 if( compiler.GetObjectModule().meta.GetGlobalConsts().IsExist(variable) 99 || compiler.GetObjectModule().meta.GetGlobalConstMacros().IsExist(variable) ) 100 100 { 101 101 //定数リストに該当したとき … … 236 236 } 237 237 238 if( varType.IsObject() && compiler. objectModule.meta.GetBlittableTypes().IsExist( calcType ) ){238 if( varType.IsObject() && compiler.GetObjectModule().meta.GetBlittableTypes().IsExist( calcType ) ){ 239 239 // Blittable型をオブジェクトとして扱う 240 240 vector<const UserProc *> userProcs; 241 compiler. objectModule.meta.GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );241 compiler.GetObjectModule().meta.GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs ); 242 242 if( userProcs.size() != 1 ){ 243 243 SetError(); -
trunk/abdev/BasicCompiler64/Compile_CallProc.cpp
r257 r266 126 126 pobj_c = &varType.GetClass(); 127 127 if( NATURAL_TYPE( varType.GetBasicType() ) != DEF_OBJECT ){ 128 pobj_c=compiler. objectModule.meta.GetClasses().Find(ObjectName);128 pobj_c=compiler.GetObjectModule().meta.GetClasses().Find(ObjectName); 129 129 if( pobj_c ){ 130 130 isStatic = true; -
trunk/abdev/BasicCompiler64/Compile_Func.cpp
r262 r266 36 36 tempParm=temp2; 37 37 38 type.SetType( DEF_OBJECT, compiler. objectModule.meta.GetClasses().GetStringClassPtr() );38 type.SetType( DEF_OBJECT, compiler.GetObjectModule().meta.GetClasses().GetStringClassPtr() ); 39 39 } 40 40 … … 84 84 85 85 //オーバーロードを解決 86 pUserProc=OverloadSolution(name,subs,compiler. objectModule.meta.GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );86 pUserProc=OverloadSolution(name,subs,compiler.GetObjectModule().meta.GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() ); 87 87 88 88 if(!pUserProc){ -
trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp
r263 r266 23 23 // DLLのグローバル領域をコンパイル 24 24 //////////////////////////////////////// 25 extern BOOL bDll; 26 if(!bDll){ 25 if(!compiler.IsDll()){ 27 26 //ret 28 27 compiler.codeGenerator.op_ret(); … … 55 54 56 55 //クラスに属する静的メンバを定義 57 compiler. objectModule.meta.GetClasses().InitStaticMember();56 compiler.GetObjectModule().meta.GetClasses().InitStaticMember(); 58 57 59 58 GetGlobalDataForDll(); … … 77 76 const PertialSchedule *pStackFramePertialSchedule = compiler.codeGenerator.op_sub_rsp( 0, true ); 78 77 79 BOOST_FOREACH( Variable *pVar, compiler. objectModule.meta.GetGlobalVars() ){78 BOOST_FOREACH( Variable *pVar, compiler.GetObjectModule().meta.GetGlobalVars() ){ 80 79 if(memicmp(pVar->GetName().c_str(),"Static%",7)==0){ 81 80 //コンストラクタ呼び出し … … 140 139 && userProc.HasParentClass() 141 140 && userProc.GetParentClass().GetName() == "_System_TypeBase" ){ 142 compiler. objectModule.meta.GetClasses().Compile_System_InitializeUserTypes();141 compiler.GetObjectModule().meta.GetClasses().Compile_System_InitializeUserTypes(); 143 142 } 144 143 else if( userProc.GetName() == "RegisterGlobalRoots" … … 189 188 190 189 //コンパイルスタートをクラス管理クラスに追加 191 compiler. objectModule.meta.GetClasses().StartCompile( pUserProc );190 compiler.GetObjectModule().meta.GetClasses().StartCompile( pUserProc ); 192 191 193 192 //コンパイル中の関数 … … 693 692 } 694 693 void CompileLocal(){ 695 extern BOOL bDll; 696 if(bDll){ 694 if( compiler.IsDll() ){ 697 695 //DLLの場合はグローバル変数を初期化するための関数を一番初めにコンパイルする 698 696 const UserProc *pUserProc = GetSubHash("_System_InitDllGlobalVariables"); … … 717 715 718 716 repeat: 719 compiler. objectModule.meta.GetUserProcs().Iterator_Reset();720 while( compiler. objectModule.meta.GetUserProcs().Iterator_HasNext() )717 compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset(); 718 while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() ) 721 719 { 722 UserProc *pUserProc = compiler. objectModule.meta.GetUserProcs().Iterator_GetNext();720 UserProc *pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext(); 723 721 CompileBufferInProcedure( *pUserProc ); 724 722 } … … 736 734 //プロシージャコンパイルによって、プロシージャコンパイルが必要になる場合 737 735 738 compiler. objectModule.meta.GetUserProcs().Iterator_Reset();739 while( compiler. objectModule.meta.GetUserProcs().Iterator_HasNext() )736 compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset(); 737 while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() ) 740 738 { 741 UserProc *pUserProc = compiler. objectModule.meta.GetUserProcs().Iterator_GetNext();739 UserProc *pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext(); 742 740 CompileBufferInProcedure( *pUserProc ); 743 741 } -
trunk/abdev/BasicCompiler64/Compile_Statement.cpp
r263 r266 136 136 if(resultType.IsDouble()){ 137 137 double dbl=0; 138 offset=compiler. objectModule.dataTable.Add( dbl );138 offset=compiler.GetObjectModule().dataTable.Add( dbl ); 139 139 140 140 //comisd xmm0,qword ptr[data table offset] … … 153 153 else if(resultType.IsSingle()){ 154 154 float flt=0; 155 offset=compiler. objectModule.dataTable.Add( flt );155 offset=compiler.GetObjectModule().dataTable.Add( flt ); 156 156 157 157 //comiss xmm0,dword ptr[data table offset] -
trunk/abdev/BasicCompiler64/Compile_Var.cpp
r257 r266 389 389 // 名前空間を分離 390 390 char namespaceStr[VN_SIZE]="", simpleName[VN_SIZE]; 391 compiler. objectModule.meta.GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName );391 compiler.GetObjectModule().meta.GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName ); 392 392 393 393 // 先頭オブジェクトまたはクラス名と入れ子メンバに分割 … … 482 482 //Const修飾子のメソッド内でメンバ書き込みアクセスが発生したとき 483 483 //(コンストラクタ、デストラクタ内を除く) 484 const CMethod *pMethod = compiler. objectModule.meta.GetClasses().GetNowCompilingMethodInfo();484 const CMethod *pMethod = compiler.GetObjectModule().meta.GetClasses().GetNowCompilingMethodInfo(); 485 485 if( isWriteAccess && 486 486 pMethod->IsConst() && … … 519 519 GetNowStaticVarFullName(VarName,temporary); 520 520 521 pVar = compiler. objectModule.meta.GetGlobalVars().Find( Symbol( temporary ) );521 pVar = compiler.GetObjectModule().meta.GetGlobalVars().Find( Symbol( temporary ) ); 522 522 if( pVar ){ 523 523 goto GlobalOk; … … 542 542 } 543 543 544 int typeDefIndex = compiler. objectModule.meta.GetTypeDefs().GetIndex( VarName );544 int typeDefIndex = compiler.GetObjectModule().meta.GetTypeDefs().GetIndex( VarName ); 545 545 if( typeDefIndex != -1 ){ 546 546 // TypeDef後の型名だったとき 547 lstrcpy( VarName, compiler. objectModule.meta.GetTypeDefs()[typeDefIndex].GetBaseName().c_str() );547 lstrcpy( VarName, compiler.GetObjectModule().meta.GetTypeDefs()[typeDefIndex].GetBaseName().c_str() ); 548 548 } 549 549 550 550 char temp2[VN_SIZE]; 551 551 sprintf(temp2,"%s.%s",VarName,temporary); 552 pVar = compiler. objectModule.meta.GetGlobalVars().Find( Symbol( temp2 ) );552 pVar = compiler.GetObjectModule().meta.GetGlobalVars().Find( Symbol( temp2 ) ); 553 553 if( pVar ){ 554 554 lstrcpy(member,tempMember); … … 562 562 char temp2[VN_SIZE]; 563 563 sprintf(temp2,"%s.%s",compiler.pCompilingClass->GetName().c_str(),VarName); 564 pVar = compiler. objectModule.meta.GetGlobalVars().Find( Symbol( temp2 ) );564 pVar = compiler.GetObjectModule().meta.GetGlobalVars().Find( Symbol( temp2 ) ); 565 565 if( pVar ){ 566 566 goto GlobalOk; … … 572 572 ///////////////////// 573 573 574 pVar = compiler. objectModule.meta.GetGlobalVars().BackSearch( Symbol( VarName ) );574 pVar = compiler.GetObjectModule().meta.GetGlobalVars().BackSearch( Symbol( VarName ) ); 575 575 if( pVar ){ 576 576 goto GlobalOk; … … 857 857 char *temp; 858 858 temp=(char *)i64data; 859 i2=compiler. objectModule.dataTable.AddString( temp );859 i2=compiler.GetObjectModule().dataTable.AddString( temp ); 860 860 HeapDefaultFree(temp); 861 861 … … 1007 1007 char *temp; 1008 1008 temp=(char *)i64data; 1009 i2=compiler. objectModule.dataTable.AddString( temp );1009 i2=compiler.GetObjectModule().dataTable.AddString( temp ); 1010 1010 HeapDefaultFree(temp); 1011 1011 … … 1278 1278 } 1279 1279 1280 BOOST_FOREACH( const Variable *pVar, compiler. objectModule.meta.GetGlobalVars() ){1280 BOOST_FOREACH( const Variable *pVar, compiler.GetObjectModule().meta.GetGlobalVars() ){ 1281 1281 if( pVar->GetType().IsObject() || pVar->GetType().IsPointer() || pVar->GetType().IsStruct() ){ 1282 1282 // オブジェクトまたはポインタだったとき -
trunk/abdev/BasicCompiler64/MakePeHdr.cpp
r263 r266 105 105 extern HANDLE hHeap; 106 106 extern BOOL bDebugCompile; 107 extern BOOL bDll;108 107 extern DWORD ImageBase; 109 108 extern int obp_AllocSize; … … 123 122 124 123 //エクスポート セクションを利用するかどうか 125 if( bDll) bUse_ExportSection=1;124 if( compiler.IsDll() ) bUse_ExportSection=1; 126 125 else bUse_ExportSection=0; 127 126 … … 129 128 ////////////////// 130 129 // データテーブル 131 compiler. objectModule.dataTable.Clear();130 compiler.GetObjectModule().dataTable.Clear(); 132 131 if(bDebugCompile){ 133 compiler. objectModule.dataTable.Add( (long)0x00000002 );132 compiler.GetObjectModule().dataTable.Add( (long)0x00000002 ); 134 133 } 135 134 … … 155 154 156 155 //関数ポインタ情報を初期化 157 compiler. objectModule.meta.GetProcPointers().clear();156 compiler.GetObjectModule().meta.GetProcPointers().clear(); 158 157 159 158 // 名前空間情報を取得 160 159 NamespaceSupporter::CollectNamespaces( 161 Smoothie::Lexical::source.GetBuffer(),162 compiler. objectModule.meta.GetNamespaces()160 compiler.GetObjectModule().source.GetBuffer(), 161 compiler.GetObjectModule().meta.GetNamespaces() 163 162 ); 164 163 … … 166 165 // CollectProcedures関数の中で参照されるオブジェクト名を事前に取得する。 167 166 // ※オブジェクトの内容までは取得しない 168 compiler. objectModule.meta.GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );167 compiler.GetObjectModule().meta.GetClasses().CollectClassesForNameOnly( compiler.GetObjectModule().source ); 169 168 170 169 //TypeDef情報を初期化 171 compiler. objectModule.meta.GetTypeDefs().Init();170 compiler.GetObjectModule().meta.GetTypeDefs().Init(); 172 171 173 172 //定数情報を取得 … … 177 176 compiler.pCompilingClass = NULL; 178 177 CollectProcedures( 179 Smoothie::Lexical::source,180 compiler. objectModule.meta.GetUserProcs(),181 compiler. objectModule.meta.GetDllProcs()178 compiler.GetObjectModule().source, 179 compiler.GetObjectModule().meta.GetUserProcs(), 180 compiler.GetObjectModule().meta.GetDllProcs() 182 181 ); 183 182 184 183 // クラス情報を取得(※注 - CollectProceduresの後に呼び出す) 185 compiler. objectModule.meta.GetClasses().GetAllClassInfo();184 compiler.GetObjectModule().meta.GetClasses().GetAllClassInfo(); 186 185 187 186 // サブルーチン(ユーザー定義、DLL関数)のイテレータの準備 188 compiler. objectModule.meta.GetUserProcs().Iterator_Init();189 compiler. objectModule.meta.GetDllProcs().Iterator_Init();187 compiler.GetObjectModule().meta.GetUserProcs().Iterator_Init(); 188 compiler.GetObjectModule().meta.GetDllProcs().Iterator_Init(); 190 189 191 190 /* 192 if( !compiler. objectModule.meta.WriteXml( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) )191 if( !compiler.GetObjectModule().meta.WriteXml( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) ) 193 192 { 194 193 MessageBox(0,"XML書き込みに失敗","test",0); … … 200 199 } 201 200 202 if( !compiler. objectModule.meta.WriteBinaly( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )201 if( !compiler.GetObjectModule().meta.WriteBinaly( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) ) 203 202 { 204 203 MessageBox(0,"バイナリ書き込みに失敗","test",0); … … 209 208 MessageBox(0,"バイナリ読み込みに失敗","test",0); 210 209 } 211 if( !compiler. objectModule.meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )210 if( !compiler.GetObjectModule().meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) ) 212 211 { 213 212 MessageBox(0,"バイナリ書き込みに失敗","test",0); … … 218 217 MessageBox(0,"バイナリ読み込みに失敗","test",0); 219 218 } 220 compiler. objectModule.meta = (*pTempMeta);*/219 compiler.GetObjectModule().meta = (*pTempMeta);*/ 221 220 222 221 … … 353 352 UserProc::CompileStartForGlobalArea(); 354 353 355 if( !bDll){354 if( !compiler.IsDll() ){ 356 355 // 名前空間が初期化されているかをチェック 357 356 if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() ){ … … 379 378 380 379 // コード生成対象を選択 381 compiler.codeGenerator.Select( compiler. objectModule.globalNativeCode );380 compiler.codeGenerator.Select( compiler.GetObjectModule().globalNativeCode ); 382 381 383 382 trace_for_sourcecodestep( "★★★ グローバル領域のコンパイルを開始" ); … … 402 401 403 402 //クラスに属する静的メンバを定義 404 compiler. objectModule.meta.GetClasses().InitStaticMember();403 compiler.GetObjectModule().meta.GetClasses().InitStaticMember(); 405 404 406 405 //グローバル実行領域をコンパイル開始 … … 506 505 507 506 vector<ObjectModule *> masterObjectModules; 508 masterObjectModules.push_back( &compiler. objectModule);507 masterObjectModules.push_back( &compiler.GetObjectModule() ); 509 508 compiler.linker.Link( masterObjectModules ); 510 509 … … 520 519 // 使用するDLL関数のチェック 521 520 //////////////////////////////// 522 compiler. objectModule.meta.GetDllProcs().Iterator_Reset();523 while( compiler. objectModule.meta.GetDllProcs().Iterator_HasNext() )521 compiler.GetObjectModule().meta.GetDllProcs().Iterator_Reset(); 522 while( compiler.GetObjectModule().meta.GetDllProcs().Iterator_HasNext() ) 524 523 { 525 const DllProc *pDllProc = compiler. objectModule.meta.GetDllProcs().Iterator_GetNext();524 const DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().Iterator_GetNext(); 526 525 527 526 if( !pDllProc->IsUsing() ){ … … 594 593 //辞書順にサーチ 595 594 temporary[0]=0; 596 compiler. objectModule.meta.GetUserProcs().Iterator_Reset();597 while( compiler. objectModule.meta.GetUserProcs().Iterator_HasNext() )595 compiler.GetObjectModule().meta.GetUserProcs().Iterator_Reset(); 596 while( compiler.GetObjectModule().meta.GetUserProcs().Iterator_HasNext() ) 598 597 { 599 pUserProc = compiler. objectModule.meta.GetUserProcs().Iterator_GetNext();598 pUserProc = compiler.GetObjectModule().meta.GetUserProcs().Iterator_GetNext(); 600 599 if(pUserProc->IsExport()){ 601 600 if(temporary[0]=='\0'){ … … 698 697 int ImportDllNum=0; 699 698 700 compiler. objectModule.meta.GetDllProcs().Iterator_Reset();701 while( compiler. objectModule.meta.GetDllProcs().Iterator_HasNext() )699 compiler.GetObjectModule().meta.GetDllProcs().Iterator_Reset(); 700 while( compiler.GetObjectModule().meta.GetDllProcs().Iterator_HasNext() ) 702 701 { 703 const DllProc *pDllProc = compiler. objectModule.meta.GetDllProcs().Iterator_GetNext();702 const DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().Iterator_GetNext(); 704 703 705 704 if( !pDllProc->IsUsing() ){ … … 737 736 pImportDescriptor[i].Name=i*0x10; //※すぐ下で再計算 738 737 739 compiler. objectModule.meta.GetDllProcs().Iterator_Reset();740 while( compiler. objectModule.meta.GetDllProcs().Iterator_HasNext() )738 compiler.GetObjectModule().meta.GetDllProcs().Iterator_Reset(); 739 while( compiler.GetObjectModule().meta.GetDllProcs().Iterator_HasNext() ) 741 740 { 742 const DllProc *pDllProc = compiler. objectModule.meta.GetDllProcs().Iterator_GetNext();741 const DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().Iterator_GetNext(); 743 742 744 743 if( !pDllProc->IsUsing() ){ … … 775 774 pHintTable=(char *)HeapAlloc(hHeap,0,HintAllocSize); 776 775 for(i=0,i5=0;i<ImportDllNum;i++){ 777 compiler. objectModule.meta.GetDllProcs().Iterator_Reset();778 while( compiler. objectModule.meta.GetDllProcs().Iterator_HasNext() )776 compiler.GetObjectModule().meta.GetDllProcs().Iterator_Reset(); 777 while( compiler.GetObjectModule().meta.GetDllProcs().Iterator_HasNext() ) 779 778 { 780 DllProc *pDllProc = compiler. objectModule.meta.GetDllProcs().Iterator_GetNext();779 DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().Iterator_GetNext(); 781 780 782 781 if( !pDllProc->IsUsing() ){ … … 815 814 816 815 817 if( bDll){816 if( compiler.IsDll() ){ 818 817 //DLLの場合はリロケーション情報を仮生成 819 818 //※正式な生成は各セクションのメモリ上のサイズが決定してから再度行う。 … … 826 825 //(デバッグ情報で利用される) 827 826 extern int AllInitGlobalVarSize; 828 BOOST_FOREACH( Variable *pVar, compiler. objectModule.meta.GetGlobalVars() ){827 BOOST_FOREACH( Variable *pVar, compiler.GetObjectModule().meta.GetGlobalVars() ){ 829 828 if(pVar->GetOffsetAddress()&0x80000000){ 830 829 pVar->SetOffsetAddress( … … 839 838 // デバッグセクションを生成 840 839 //////////////////////////////////// 841 842 //機械語コードとBasicコードの関係を整理843 extern SourceLines oldSourceLines;844 int MinObp,MaxObp;845 SourceLines tempSourceLines;846 MaxObp=0;847 while(1){848 for(i3=0,MinObp=0x0FFFFFFF;i3<oldSourceLines.size();i3++){849 if(oldSourceLines[i3].GetNativeCodePos()<MinObp&&MaxObp<oldSourceLines[i3].GetNativeCodePos()){850 MinObp=oldSourceLines[i3].GetNativeCodePos();851 i4=i3;852 }853 }854 if(MinObp==0x0FFFFFFF) break;855 tempSourceLines.push_back( oldSourceLines[i4] );856 MaxObp=tempSourceLines.back().GetNativeCodePos();857 }858 oldSourceLines = tempSourceLines;859 840 860 841 //デバッグセクションを生成 … … 903 884 904 885 //データセクションのファイル上のサイズ 905 if(compiler. objectModule.dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.objectModule.dataTable.GetSize()+(FILE_ALIGNMENT-compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT);906 else FileSize_DataSection=compiler. objectModule.dataTable.GetSize();886 if(compiler.GetObjectModule().dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.GetObjectModule().dataTable.GetSize()+(FILE_ALIGNMENT-compiler.GetObjectModule().dataTable.GetSize()%FILE_ALIGNMENT); 887 else FileSize_DataSection=compiler.GetObjectModule().dataTable.GetSize(); 907 888 if(FileSize_DataSection) bUse_DataSection=1; 908 889 else bUse_DataSection=0; … … 1065 1046 LookupSize; //ルックアップテーブル 1066 1047 1067 compiler. objectModule.meta.GetDllProcs().Iterator_Reset();1068 while( compiler. objectModule.meta.GetDllProcs().Iterator_HasNext() )1048 compiler.GetObjectModule().meta.GetDllProcs().Iterator_Reset(); 1049 while( compiler.GetObjectModule().meta.GetDllProcs().Iterator_HasNext() ) 1069 1050 { 1070 const DllProc *pDllProc = compiler. objectModule.meta.GetDllProcs().Iterator_GetNext();1051 const DllProc *pDllProc = compiler.GetObjectModule().meta.GetDllProcs().Iterator_GetNext(); 1071 1052 1072 1053 if( !pDllProc->IsUsing() ){ … … 1086 1067 //////////////////////////////////////// 1087 1068 //仮想関数データテーブルスケジュール 1088 compiler. objectModule.meta.GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);1069 compiler.GetObjectModule().meta.GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection); 1089 1070 1090 1071 … … 1130 1111 1131 1112 1132 if( bDll){1113 if( compiler.IsDll() ){ 1133 1114 //DLLの場合はリロケーション情報を生成 1134 1115 pobj_Reloc->ResetRelocBuffer(); … … 1269 1250 ImagePeHdr.FileHeader.NumberOfSymbols= 0x00000000; 1270 1251 ImagePeHdr.FileHeader.SizeOfOptionalHeader= IMAGE_SIZEOF_NT_OPTIONAL64_HEADER; 1271 if( bDll){1252 if( compiler.IsDll() ){ 1272 1253 ImagePeHdr.FileHeader.Characteristics= IMAGE_FILE_EXECUTABLE_IMAGE| 1273 1254 IMAGE_FILE_DLL| … … 1286 1267 ImagePeHdr.OptionalHeader.SizeOfInitializedData=FileSize_DataSection; //データサイズ(.dataのセッションサイズ) 1287 1268 ImagePeHdr.OptionalHeader.SizeOfUninitializedData=0; //未初期化データのサイズ(なし) 1288 if( bDll){1269 if( compiler.IsDll() ){ 1289 1270 if(DllMain_EntryPoint==-1) 1290 1271 ImagePeHdr.OptionalHeader.AddressOfEntryPoint=0; … … 1636 1617 if(bUse_DataSection){ 1637 1618 //データ テーブル 1638 WriteFile(hFile,compiler. objectModule.dataTable.GetPtr(),compiler.objectModule.dataTable.GetSize(),(DWORD *)&i2,NULL);1619 WriteFile(hFile,compiler.GetObjectModule().dataTable.GetPtr(),compiler.GetObjectModule().dataTable.GetSize(),(DWORD *)&i2,NULL); 1639 1620 i+=i2; 1640 1621 } … … 1748 1729 1749 1730 //クラスに関するメモリを解放 1750 compiler. objectModule.meta.GetClasses().Clear();1731 compiler.GetObjectModule().meta.GetClasses().Clear(); 1751 1732 } -
trunk/abdev/BasicCompiler64/NumOpe.cpp
r257 r266 25 25 SetStringQuotes( parameter ); 26 26 27 Operator_New( *compiler. objectModule.meta.GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.objectModule.meta.GetClasses().GetStringClassPtr() ) );27 Operator_New( *compiler.GetObjectModule().meta.GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.GetObjectModule().meta.GetClasses().GetStringClassPtr() ) ); 28 28 29 29 free( parameter ); … … 259 259 Type leftType; 260 260 if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){ 261 if( isClassName == false && compiler. objectModule.meta.GetBlittableTypes().IsExist( leftType ) ){261 if( isClassName == false && compiler.GetObjectModule().meta.GetBlittableTypes().IsExist( leftType ) ){ 262 262 // 左側のオブジェクト部分がBlittable型のとき 263 263 … … 265 265 lstrcpy( temporary, termLeft ); 266 266 sprintf( termLeft, "%s(%s)", 267 compiler. objectModule.meta.GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(),267 compiler.GetObjectModule().meta.GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(), 268 268 temporary ); 269 269 } … … 293 293 294 294 if( pIsClassName ){ 295 if( compiler. objectModule.meta.GetClasses().Find( termFull ) ){295 if( compiler.GetObjectModule().meta.GetClasses().Find( termFull ) ){ 296 296 *pIsClassName = true; 297 297 return true; … … 387 387 } 388 388 389 ConstMacro *pConstMacro = compiler. objectModule.meta.GetGlobalConstMacros().Find( procName );389 ConstMacro *pConstMacro = compiler.GetObjectModule().meta.GetGlobalConstMacros().Find( procName ); 390 390 if( pConstMacro ) 391 391 { … … 574 574 } 575 575 576 i2 = compiler. objectModule.dataTable.AddBinary( binary, num * tempBaseType.GetSize() );576 i2 = compiler.GetObjectModule().dataTable.AddBinary( binary, num * tempBaseType.GetSize() ); 577 577 578 578 //mov reg,i2 … … 603 603 604 604 if(resultType.IsDouble()){ 605 i3 = compiler. objectModule.dataTable.Add( i64data );605 i3 = compiler.GetObjectModule().dataTable.Add( i64data ); 606 606 607 607 //movlpd xmm_reg,qword ptr[data table offset] … … 617 617 memcpy(&i32data,&flt,sizeof(long)); 618 618 619 i3 = compiler. objectModule.dataTable.Add( i32data );619 i3 = compiler.GetObjectModule().dataTable.Add( i32data ); 620 620 621 621 //movss xmm_reg,dword ptr[data table offset] … … 798 798 799 799 type_stack[sp]=DEF_OBJECT; 800 index_stack[sp]=(LONG_PTR)compiler. objectModule.meta.GetClasses().GetStringClassPtr();800 index_stack[sp]=(LONG_PTR)compiler.GetObjectModule().meta.GetClasses().GetStringClassPtr(); 801 801 bLiteralCalculation=0; 802 802 … … 811 811 bLiteralCalculation=0; 812 812 813 i2 = compiler. objectModule.dataTable.AddString( term, i3 );813 i2 = compiler.GetObjectModule().dataTable.AddString( term, i3 ); 814 814 815 815 //mov reg,i2 … … 904 904 } 905 905 else{ 906 index_stack[sp] = (LONG_PTR)compiler. objectModule.meta.GetClasses().GetObjectClassPtr();906 index_stack[sp] = (LONG_PTR)compiler.GetObjectModule().meta.GetClasses().GetObjectClassPtr(); 907 907 } 908 908 … … 927 927 ////////////// 928 928 929 i3 = compiler. objectModule.meta.GetGlobalConsts().GetBasicType(term);929 i3 = compiler.GetObjectModule().meta.GetGlobalConsts().GetBasicType(term); 930 930 if(i3){ 931 if( compiler. objectModule.meta.GetGlobalConsts().IsStringPtr( term ) ){931 if( compiler.GetObjectModule().meta.GetGlobalConsts().IsStringPtr( term ) ){ 932 932 //リテラル文字列 933 933 934 double dbl = compiler. objectModule.meta.GetGlobalConsts().GetDoubleData(term);934 double dbl = compiler.GetObjectModule().meta.GetGlobalConsts().GetDoubleData(term); 935 935 memcpy(&i64data,&dbl,sizeof(double)); 936 936 … … 946 946 if(IsRealNumberType(i3)){ 947 947 //実数 948 double dbl = compiler. objectModule.meta.GetGlobalConsts().GetDoubleData(term);948 double dbl = compiler.GetObjectModule().meta.GetGlobalConsts().GetDoubleData(term); 949 949 memcpy(&i64data,&dbl,sizeof(double)); 950 950 goto Literal; … … 952 952 else if(IsWholeNumberType(i3)){ 953 953 //整数 954 i64data = compiler. objectModule.meta.GetGlobalConsts().GetWholeData(term);954 i64data = compiler.GetObjectModule().meta.GetGlobalConsts().GetWholeData(term); 955 955 goto Literal; 956 956 } … … 993 993 } 994 994 else{ 995 i3 = compiler. objectModule.dataTable.Add( i64data );995 i3 = compiler.GetObjectModule().dataTable.Add( i64data ); 996 996 997 997 //movlpd xmm_reg,qword ptr[data table offset] … … 1015 1015 } 1016 1016 else{ 1017 i3=compiler. objectModule.dataTable.Add( i32data );1017 i3=compiler.GetObjectModule().dataTable.Add( i32data ); 1018 1018 1019 1019 //movss xmm_reg,dword ptr[data table offset] -
trunk/abdev/BasicCompiler64/NumOpe_Arithmetic.cpp
r257 r266 470 470 double dbl; 471 471 dbl=-1; 472 i32data = compiler. objectModule.dataTable.Add( dbl );472 i32data = compiler.GetObjectModule().dataTable.Add( dbl ); 473 473 474 474 //mulsd xmm_reg,qword ptr[data table offset] ※data = -1 … … 495 495 float flt; 496 496 flt=-1; 497 i32data = compiler. objectModule.dataTable.Add( flt );497 i32data = compiler.GetObjectModule().dataTable.Add( flt ); 498 498 499 499 //mulss xmm_reg,dword ptr[data table offset] ※data = -1 -
trunk/abdev/BasicCompiler64/NumOpe_TypeOperation.cpp
r257 r266 89 89 //addsd xmm_reg,qword ptr[offset] ※offset value:43f0000000000000 90 90 _int64 i64data=0x43f0000000000000; 91 long temp=compiler. objectModule.dataTable.Add( i64data );91 long temp=compiler.GetObjectModule().dataTable.Add( i64data ); 92 92 compiler.codeGenerator.PutOld( 93 93 (char)0xF2, … … 149 149 //addss xmm_reg,dword ptr[offset] ※offset value:5f800000 150 150 long i32data=0x5f800000; 151 long temp=compiler. objectModule.dataTable.Add( i32data );151 long temp=compiler.GetObjectModule().dataTable.Add( i32data ); 152 152 compiler.codeGenerator.PutOld( 153 153 (char)0xF3,
Note:
See TracChangeset
for help on using the changeset viewer.