Changeset 257 in dev
- Timestamp:
- Aug 2, 2007, 4:17:27 AM (17 years ago)
- Location:
- trunk/abdev
- Files:
-
- 1 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/BasicCompiler.vcproj
r256 r257 1265 1265 Name="Compiler Classes" 1266 1266 > 1267 <File 1268 RelativePath="..\BasicCompiler_Common\src\CodeGenerator.cpp" 1269 > 1270 </File> 1271 <File 1272 RelativePath="..\BasicCompiler_Common\src\Compiler.cpp" 1273 > 1274 </File> 1275 <File 1276 RelativePath="..\BasicCompiler_Common\src\Linker.cpp" 1277 > 1278 </File> 1267 1279 <Filter 1268 1280 Name="Langauge Classes" … … 1270 1282 <File 1271 1283 RelativePath="..\BasicCompiler_Common\src\Class.cpp" 1272 >1273 </File>1274 <File1275 RelativePath="..\BasicCompiler_Common\src\CodeGenerator.cpp"1276 >1277 </File>1278 <File1279 RelativePath="..\BasicCompiler_Common\src\Compiler.cpp"1280 1284 > 1281 1285 </File> -
trunk/abdev/BasicCompiler64/BasicCompiler.vcproj
r254 r257 290 290 </Filter> 291 291 <Filter 292 Name="Language Classes" 293 > 294 <File 295 RelativePath="..\BasicCompiler_Common\include\Class.h" 296 > 297 </File> 298 <File 299 RelativePath="..\BasicCompiler_Common\include\CodeGenerator.h" 300 > 301 </File> 302 <File 303 RelativePath="..\BasicCompiler_Common\include\Compiler.h" 304 > 305 </File> 306 <File 307 RelativePath="..\BasicCompiler_Common\include\Const.h" 308 > 309 </File> 310 <File 311 RelativePath="..\BasicCompiler_Common\include\DataTable.h" 312 > 313 </File> 314 <File 315 RelativePath="..\BasicCompiler_Common\include\Exception.h" 316 > 317 </File> 318 <File 319 RelativePath="..\BasicCompiler_Common\include\LexicalScope.h" 320 > 321 </File> 322 <File 323 RelativePath="..\BasicCompiler_Common\include\Member.h" 324 > 325 </File> 326 <File 327 RelativePath="..\BasicCompiler_Common\include\MetaImpl.h" 328 > 329 </File> 330 <File 331 RelativePath="..\BasicCompiler_Common\include\Method.h" 332 > 333 </File> 334 <File 335 RelativePath="..\BasicCompiler_Common\include\Namespace.h" 336 > 337 </File> 338 <File 339 RelativePath="..\BasicCompiler_Common\include\NamespaceSupporter.h" 340 > 341 </File> 342 <File 343 RelativePath="..\BasicCompiler_Common\include\NativeCode.h" 344 > 345 </File> 346 <File 347 RelativePath="..\BasicCompiler_Common\include\Parameter.h" 348 > 349 </File> 350 <File 351 RelativePath="..\BasicCompiler_Common\include\Procedure.h" 352 > 353 </File> 354 <File 355 RelativePath="..\BasicCompiler_Common\include\Program.h" 356 > 357 </File> 358 <File 359 RelativePath="..\BasicCompiler_Common\include\Prototype.h" 360 > 361 </File> 362 <File 363 RelativePath="..\BasicCompiler_Common\include\SmoothieImpl.h" 364 > 365 </File> 366 <File 367 RelativePath="..\BasicCompiler_Common\include\Symbol.h" 368 > 369 </File> 370 <File 371 RelativePath="..\BasicCompiler_Common\include\Type.h" 372 > 373 </File> 374 <File 375 RelativePath="..\BasicCompiler_Common\include\TypeDef.h" 376 > 377 </File> 378 <File 379 RelativePath="..\BasicCompiler_Common\include\Variable.h" 292 Name="Common Classes" 293 > 294 <File 295 RelativePath="..\BasicCompiler_Common\include\BoostSerializationSupport.h" 296 > 297 </File> 298 <File 299 RelativePath="..\BasicCompiler_Common\include\Hashmap.h" 300 > 301 </File> 302 <File 303 RelativePath="..\BasicCompiler_Common\include\logger.h" 380 304 > 381 305 </File> 382 306 </Filter> 383 307 <Filter 384 Name="Common Classes" 385 > 386 <File 387 RelativePath="..\BasicCompiler_Common\include\BoostSerializationSupport.h" 388 > 389 </File> 390 <File 391 RelativePath="..\BasicCompiler_Common\include\Hashmap.h" 392 > 393 </File> 394 <File 395 RelativePath="..\BasicCompiler_Common\include\logger.h" 396 > 397 </File> 308 Name="Compiler Classes" 309 > 310 <File 311 RelativePath="..\BasicCompiler_Common\include\CodeGenerator.h" 312 > 313 </File> 314 <File 315 RelativePath="..\BasicCompiler_Common\include\Compiler.h" 316 > 317 </File> 318 <File 319 RelativePath="..\BasicCompiler_Common\include\Linker.h" 320 > 321 </File> 322 <Filter 323 Name="Language Classes" 324 > 325 <File 326 RelativePath="..\BasicCompiler_Common\include\Class.h" 327 > 328 </File> 329 <File 330 RelativePath="..\BasicCompiler_Common\include\Const.h" 331 > 332 </File> 333 <File 334 RelativePath="..\BasicCompiler_Common\include\DataTable.h" 335 > 336 </File> 337 <File 338 RelativePath="..\BasicCompiler_Common\include\Exception.h" 339 > 340 </File> 341 <File 342 RelativePath="..\BasicCompiler_Common\include\LexicalScope.h" 343 > 344 </File> 345 <File 346 RelativePath="..\BasicCompiler_Common\include\Member.h" 347 > 348 </File> 349 <File 350 RelativePath="..\BasicCompiler_Common\include\Meta.h" 351 > 352 </File> 353 <File 354 RelativePath="..\BasicCompiler_Common\include\Method.h" 355 > 356 </File> 357 <File 358 RelativePath="..\BasicCompiler_Common\include\Namespace.h" 359 > 360 </File> 361 <File 362 RelativePath="..\BasicCompiler_Common\include\NamespaceSupporter.h" 363 > 364 </File> 365 <File 366 RelativePath="..\BasicCompiler_Common\include\NativeCode.h" 367 > 368 </File> 369 <File 370 RelativePath="..\BasicCompiler_Common\include\Parameter.h" 371 > 372 </File> 373 <File 374 RelativePath="..\BasicCompiler_Common\include\Procedure.h" 375 > 376 </File> 377 <File 378 RelativePath="..\BasicCompiler_Common\include\Program.h" 379 > 380 </File> 381 <File 382 RelativePath="..\BasicCompiler_Common\include\Prototype.h" 383 > 384 </File> 385 <File 386 RelativePath="..\BasicCompiler_Common\include\SmoothieImpl.h" 387 > 388 </File> 389 <File 390 RelativePath="..\BasicCompiler_Common\include\Symbol.h" 391 > 392 </File> 393 <File 394 RelativePath="..\BasicCompiler_Common\include\Type.h" 395 > 396 </File> 397 <File 398 RelativePath="..\BasicCompiler_Common\include\TypeDef.h" 399 > 400 </File> 401 <File 402 RelativePath="..\BasicCompiler_Common\include\Variable.h" 403 > 404 </File> 405 </Filter> 398 406 </Filter> 399 407 </Filter> … … 476 484 </File> 477 485 <Filter 478 Name=" Compile"486 Name="x64Compile" 479 487 > 480 488 <File … … 1097 1105 </File> 1098 1106 <Filter 1107 Name="Core Classes" 1108 > 1109 <File 1110 RelativePath="..\BasicCompiler_Common\src\CommonCodeGenerator.cpp" 1111 > 1112 </File> 1113 </Filter> 1114 </Filter> 1115 <Filter 1116 Name="Compiler Classes" 1117 > 1118 <File 1119 RelativePath="..\BasicCompiler_Common\src\CodeGenerator.cpp" 1120 > 1121 </File> 1122 <File 1123 RelativePath="..\BasicCompiler_Common\src\Compiler.cpp" 1124 > 1125 </File> 1126 <File 1127 RelativePath="..\BasicCompiler_Common\src\Linker.cpp" 1128 > 1129 </File> 1130 <Filter 1099 1131 Name="Language Classes" 1100 1132 > … … 1104 1136 </File> 1105 1137 <File 1106 RelativePath="..\BasicCompiler_Common\src\CodeGenerator.cpp"1107 >1108 </File>1109 <File1110 RelativePath="..\BasicCompiler_Common\src\Compiler.cpp"1111 >1112 </File>1113 <File1114 1138 RelativePath="..\BasicCompiler_Common\src\Const.cpp" 1115 1139 > … … 1169 1193 <File 1170 1194 RelativePath="..\BasicCompiler_Common\src\Variable.cpp" 1171 >1172 </File>1173 </Filter>1174 <Filter1175 Name="Core Classes"1176 >1177 <File1178 RelativePath="..\BasicCompiler_Common\src\CommonCodeGenerator.cpp"1179 1195 > 1180 1196 </File> -
trunk/abdev/BasicCompiler64/Compile_Calc.cpp
r226 r257 96 96 } 97 97 else{ 98 if( compiler. GetMeta().GetGlobalConsts().IsExist(variable)99 || compiler. GetMeta().GetGlobalConstMacros().IsExist(variable) )98 if( compiler.objectModule.meta.GetGlobalConsts().IsExist(variable) 99 || compiler.objectModule.meta.GetGlobalConstMacros().IsExist(variable) ) 100 100 { 101 101 //定数リストに該当したとき … … 236 236 } 237 237 238 if( varType.IsObject() && compiler. GetMeta().GetBlittableTypes().IsExist( calcType ) ){238 if( varType.IsObject() && compiler.objectModule.meta.GetBlittableTypes().IsExist( calcType ) ){ 239 239 // Blittable型をオブジェクトとして扱う 240 240 vector<const UserProc *> userProcs; 241 compiler. GetMeta().GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );241 compiler.objectModule.meta.GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs ); 242 242 if( userProcs.size() != 1 ){ 243 243 SetError(); -
trunk/abdev/BasicCompiler64/Compile_CallProc.cpp
r254 r257 126 126 pobj_c = &varType.GetClass(); 127 127 if( NATURAL_TYPE( varType.GetBasicType() ) != DEF_OBJECT ){ 128 pobj_c=compiler. GetMeta().GetClasses().Find(ObjectName);128 pobj_c=compiler.objectModule.meta.GetClasses().Find(ObjectName); 129 129 if( pobj_c ){ 130 130 isStatic = true; -
trunk/abdev/BasicCompiler64/Compile_Func.cpp
r226 r257 36 36 tempParm=temp2; 37 37 38 type.SetType( DEF_OBJECT, compiler. GetMeta().GetClasses().GetStringClassPtr() );38 type.SetType( DEF_OBJECT, compiler.objectModule.meta.GetClasses().GetStringClassPtr() ); 39 39 } 40 40 … … 84 84 85 85 //オーバーロードを解決 86 pUserProc=OverloadSolution(name,subs,compiler. GetMeta().GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );86 pUserProc=OverloadSolution(name,subs,compiler.objectModule.meta.GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() ); 87 87 88 88 if(!pUserProc){ -
trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp
r255 r257 55 55 56 56 //クラスに属する静的メンバを定義 57 compiler. GetMeta().GetClasses().InitStaticMember();57 compiler.objectModule.meta.GetClasses().InitStaticMember(); 58 58 59 59 GetGlobalDataForDll(); … … 77 77 const PertialSchedule *pStackFramePertialSchedule = compiler.codeGenerator.op_sub_rsp( 0, true ); 78 78 79 BOOST_FOREACH( Variable *pVar, compiler. GetMeta().GetGlobalVars() ){79 BOOST_FOREACH( Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){ 80 80 if(memicmp(pVar->GetName().c_str(),"Static%",7)==0){ 81 81 //コンストラクタ呼び出し … … 141 141 && userProc.GetParentClass().GetName() == "_System_TypeBase" ){ 142 142 143 compiler. GetMeta().GetClasses().Compile_System_InitializeUserTypes();143 compiler.objectModule.meta.GetClasses().Compile_System_InitializeUserTypes(); 144 144 } 145 145 else if( userProc.GetName() == "RegisterGlobalRoots" … … 190 190 191 191 //コンパイルスタートをクラス管理クラスに追加 192 compiler. GetMeta().GetClasses().StartCompile( pUserProc );192 compiler.objectModule.meta.GetClasses().StartCompile( pUserProc ); 193 193 194 194 //コンパイル中の関数 … … 727 727 728 728 repeat: 729 compiler. GetMeta().GetUserProcs().Iterator_Reset();730 while( compiler. GetMeta().GetUserProcs().Iterator_HasNext() )729 compiler.objectModule.meta.GetUserProcs().Iterator_Reset(); 730 while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() ) 731 731 { 732 UserProc *pUserProc = compiler. GetMeta().GetUserProcs().Iterator_GetNext();732 UserProc *pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext(); 733 733 CompileBufferInProcedure( *pUserProc ); 734 734 } … … 746 746 //プロシージャコンパイルによって、プロシージャコンパイルが必要になる場合 747 747 748 compiler. GetMeta().GetUserProcs().Iterator_Reset();749 while( compiler. GetMeta().GetUserProcs().Iterator_HasNext() )748 compiler.objectModule.meta.GetUserProcs().Iterator_Reset(); 749 while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() ) 750 750 { 751 UserProc *pUserProc = compiler. GetMeta().GetUserProcs().Iterator_GetNext();751 UserProc *pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext(); 752 752 CompileBufferInProcedure( *pUserProc ); 753 753 } -
trunk/abdev/BasicCompiler64/Compile_Statement.cpp
r254 r257 136 136 if(resultType.IsDouble()){ 137 137 double dbl=0; 138 offset=compiler. GetDataTable().Add( dbl );138 offset=compiler.objectModule.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. GetDataTable().Add( flt );155 offset=compiler.objectModule.dataTable.Add( flt ); 156 156 157 157 //comiss xmm0,dword ptr[data table offset] -
trunk/abdev/BasicCompiler64/Compile_Var.cpp
r254 r257 389 389 // 名前空間を分離 390 390 char namespaceStr[VN_SIZE]="", simpleName[VN_SIZE]; 391 compiler. GetMeta().GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName );391 compiler.objectModule.meta.GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName ); 392 392 393 393 // 先頭オブジェクトまたはクラス名と入れ子メンバに分割 … … 482 482 //Const修飾子のメソッド内でメンバ書き込みアクセスが発生したとき 483 483 //(コンストラクタ、デストラクタ内を除く) 484 const CMethod *pMethod = compiler. GetMeta().GetClasses().GetNowCompilingMethodInfo();484 const CMethod *pMethod = compiler.objectModule.meta.GetClasses().GetNowCompilingMethodInfo(); 485 485 if( isWriteAccess && 486 486 pMethod->IsConst() && … … 519 519 GetNowStaticVarFullName(VarName,temporary); 520 520 521 pVar = compiler. GetMeta().GetGlobalVars().Find( Symbol( temporary ) );521 pVar = compiler.objectModule.meta.GetGlobalVars().Find( Symbol( temporary ) ); 522 522 if( pVar ){ 523 523 goto GlobalOk; … … 542 542 } 543 543 544 int typeDefIndex = compiler. GetMeta().GetTypeDefs().GetIndex( VarName );544 int typeDefIndex = compiler.objectModule.meta.GetTypeDefs().GetIndex( VarName ); 545 545 if( typeDefIndex != -1 ){ 546 546 // TypeDef後の型名だったとき 547 lstrcpy( VarName, compiler. GetMeta().GetTypeDefs()[typeDefIndex].GetBaseName().c_str() );547 lstrcpy( VarName, compiler.objectModule.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. GetMeta().GetGlobalVars().Find( Symbol( temp2 ) );552 pVar = compiler.objectModule.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. GetMeta().GetGlobalVars().Find( Symbol( temp2 ) );564 pVar = compiler.objectModule.meta.GetGlobalVars().Find( Symbol( temp2 ) ); 565 565 if( pVar ){ 566 566 goto GlobalOk; … … 572 572 ///////////////////// 573 573 574 pVar = compiler. GetMeta().GetGlobalVars().BackSearch( Symbol( VarName ) );574 pVar = compiler.objectModule.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. GetDataTable().AddString( temp );859 i2=compiler.objectModule.dataTable.AddString( temp ); 860 860 HeapDefaultFree(temp); 861 861 … … 1007 1007 char *temp; 1008 1008 temp=(char *)i64data; 1009 i2=compiler. GetDataTable().AddString( temp );1009 i2=compiler.objectModule.dataTable.AddString( temp ); 1010 1010 HeapDefaultFree(temp); 1011 1011 … … 1278 1278 } 1279 1279 1280 BOOST_FOREACH( const Variable *pVar, compiler. GetMeta().GetGlobalVars() ){1280 BOOST_FOREACH( const Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){ 1281 1281 if( pVar->GetType().IsObject() || pVar->GetType().IsPointer() || pVar->GetType().IsStruct() ){ 1282 1282 // オブジェクトまたはポインタだったとき -
trunk/abdev/BasicCompiler64/MakePeHdr.cpp
r255 r257 129 129 ////////////////// 130 130 // データテーブル 131 compiler. GetDataTable().Init();131 compiler.objectModule.dataTable.Clear(); 132 132 if(bDebugCompile){ 133 compiler. GetDataTable().Add( (long)0x00000002 );133 compiler.objectModule.dataTable.Add( (long)0x00000002 ); 134 134 } 135 135 … … 155 155 156 156 //関数ポインタ情報を初期化 157 compiler. GetMeta().GetProcPointers().clear();157 compiler.objectModule.meta.GetProcPointers().clear(); 158 158 159 159 // 名前空間情報を取得 160 160 NamespaceSupporter::CollectNamespaces( 161 161 Smoothie::Lexical::source.GetBuffer(), 162 compiler. GetMeta().GetNamespaces()162 compiler.objectModule.meta.GetNamespaces() 163 163 ); 164 164 … … 166 166 // CollectProcedures関数の中で参照されるオブジェクト名を事前に取得する。 167 167 // ※オブジェクトの内容までは取得しない 168 compiler. GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );168 compiler.objectModule.meta.GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source ); 169 169 170 170 //TypeDef情報を初期化 171 compiler. GetMeta().GetTypeDefs().Init();171 compiler.objectModule.meta.GetTypeDefs().Init(); 172 172 173 173 //定数情報を取得 … … 178 178 CollectProcedures( 179 179 Smoothie::Lexical::source, 180 compiler. GetMeta().GetUserProcs(),181 compiler. GetMeta().GetDllProcs()180 compiler.objectModule.meta.GetUserProcs(), 181 compiler.objectModule.meta.GetDllProcs() 182 182 ); 183 183 184 184 // クラス情報を取得(※注 - CollectProceduresの後に呼び出す) 185 compiler. GetMeta().GetClasses().GetAllClassInfo();185 compiler.objectModule.meta.GetClasses().GetAllClassInfo(); 186 186 187 187 // サブルーチン(ユーザー定義、DLL関数)のイテレータの準備 188 compiler. GetMeta().GetUserProcs().Iterator_Init();189 compiler. GetMeta().GetDllProcs().Iterator_Init();188 compiler.objectModule.meta.GetUserProcs().Iterator_Init(); 189 compiler.objectModule.meta.GetDllProcs().Iterator_Init(); 190 190 191 191 /* 192 if( !compiler. GetMeta().WriteXml( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) )192 if( !compiler.objectModule.meta.WriteXml( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) ) 193 193 { 194 194 MessageBox(0,"XML書き込みに失敗","test",0); … … 200 200 } 201 201 202 if( !compiler. GetMeta().WriteBinaly( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )202 if( !compiler.objectModule.meta.WriteBinaly( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) ) 203 203 { 204 204 MessageBox(0,"バイナリ書き込みに失敗","test",0); … … 209 209 MessageBox(0,"バイナリ読み込みに失敗","test",0); 210 210 } 211 if( !compiler. GetMeta().WriteText( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )211 if( !compiler.objectModule.meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) ) 212 212 { 213 213 MessageBox(0,"バイナリ書き込みに失敗","test",0); … … 218 218 MessageBox(0,"バイナリ読み込みに失敗","test",0); 219 219 } 220 compiler. GetMeta()= (*pTempMeta);*/220 compiler.objectModule.meta = (*pTempMeta);*/ 221 221 222 222 … … 384 384 385 385 // コード生成対象を選択 386 compiler.codeGenerator.Select( compiler. globalNativeCode );386 compiler.codeGenerator.Select( compiler.objectModule.globalNativeCode ); 387 387 388 388 trace_for_sourcecodestep( "★★★ グローバル領域のコンパイルを開始" ); … … 407 407 408 408 //クラスに属する静的メンバを定義 409 compiler. GetMeta().GetClasses().InitStaticMember();409 compiler.objectModule.meta.GetClasses().InitStaticMember(); 410 410 411 411 //グローバル実行領域をコンパイル開始 … … 524 524 // 使用するDLL関数のチェック 525 525 //////////////////////////////// 526 compiler. GetMeta().GetDllProcs().Iterator_Reset();527 while( compiler. GetMeta().GetDllProcs().Iterator_HasNext() )526 compiler.objectModule.meta.GetDllProcs().Iterator_Reset(); 527 while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() ) 528 528 { 529 const DllProc *pDllProc = compiler. GetMeta().GetDllProcs().Iterator_GetNext();529 const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext(); 530 530 531 531 if( !pDllProc->IsUsing() ){ … … 598 598 //辞書順にサーチ 599 599 temporary[0]=0; 600 compiler. GetMeta().GetUserProcs().Iterator_Reset();601 while( compiler. GetMeta().GetUserProcs().Iterator_HasNext() )600 compiler.objectModule.meta.GetUserProcs().Iterator_Reset(); 601 while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() ) 602 602 { 603 pUserProc = compiler. GetMeta().GetUserProcs().Iterator_GetNext();603 pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext(); 604 604 if(pUserProc->IsExport()){ 605 605 if(temporary[0]=='\0'){ … … 702 702 int ImportDllNum=0; 703 703 704 compiler. GetMeta().GetDllProcs().Iterator_Reset();705 while( compiler. GetMeta().GetDllProcs().Iterator_HasNext() )704 compiler.objectModule.meta.GetDllProcs().Iterator_Reset(); 705 while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() ) 706 706 { 707 const DllProc *pDllProc = compiler. GetMeta().GetDllProcs().Iterator_GetNext();707 const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext(); 708 708 709 709 if( !pDllProc->IsUsing() ){ … … 741 741 pImportDescriptor[i].Name=i*0x10; //※すぐ下で再計算 742 742 743 compiler. GetMeta().GetDllProcs().Iterator_Reset();744 while( compiler. GetMeta().GetDllProcs().Iterator_HasNext() )743 compiler.objectModule.meta.GetDllProcs().Iterator_Reset(); 744 while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() ) 745 745 { 746 const DllProc *pDllProc = compiler. GetMeta().GetDllProcs().Iterator_GetNext();746 const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext(); 747 747 748 748 if( !pDllProc->IsUsing() ){ … … 779 779 pHintTable=(char *)HeapAlloc(hHeap,0,HintAllocSize); 780 780 for(i=0,i5=0;i<ImportDllNum;i++){ 781 compiler. GetMeta().GetDllProcs().Iterator_Reset();782 while( compiler. GetMeta().GetDllProcs().Iterator_HasNext() )781 compiler.objectModule.meta.GetDllProcs().Iterator_Reset(); 782 while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() ) 783 783 { 784 DllProc *pDllProc = compiler. GetMeta().GetDllProcs().Iterator_GetNext();784 DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext(); 785 785 786 786 if( !pDllProc->IsUsing() ){ … … 830 830 //(デバッグ情報で利用される) 831 831 extern int AllInitGlobalVarSize; 832 BOOST_FOREACH( Variable *pVar, compiler. GetMeta().GetGlobalVars() ){832 BOOST_FOREACH( Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){ 833 833 if(pVar->GetOffsetAddress()&0x80000000){ 834 834 pVar->SetOffsetAddress( … … 915 915 916 916 //データセクションのファイル上のサイズ 917 if(compiler. GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.GetDataTable().GetSize()+(FILE_ALIGNMENT-compiler.GetDataTable().GetSize()%FILE_ALIGNMENT);918 else FileSize_DataSection=compiler. GetDataTable().GetSize();917 if(compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.objectModule.dataTable.GetSize()+(FILE_ALIGNMENT-compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT); 918 else FileSize_DataSection=compiler.objectModule.dataTable.GetSize(); 919 919 if(FileSize_DataSection) bUse_DataSection=1; 920 920 else bUse_DataSection=0; … … 1077 1077 LookupSize; //ルックアップテーブル 1078 1078 1079 compiler. GetMeta().GetDllProcs().Iterator_Reset();1080 while( compiler. GetMeta().GetDllProcs().Iterator_HasNext() )1079 compiler.objectModule.meta.GetDllProcs().Iterator_Reset(); 1080 while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() ) 1081 1081 { 1082 const DllProc *pDllProc = compiler. GetMeta().GetDllProcs().Iterator_GetNext();1082 const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext(); 1083 1083 1084 1084 if( !pDllProc->IsUsing() ){ … … 1098 1098 //////////////////////////////////////// 1099 1099 //仮想関数データテーブルスケジュール 1100 compiler. GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);1100 compiler.objectModule.meta.GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection); 1101 1101 1102 1102 … … 1631 1631 if(bUse_DataSection){ 1632 1632 //データ テーブル 1633 WriteFile(hFile,compiler. GetDataTable().GetPtr(),compiler.GetDataTable().GetSize(),(DWORD *)&i2,NULL);1633 WriteFile(hFile,compiler.objectModule.dataTable.GetPtr(),compiler.objectModule.dataTable.GetSize(),(DWORD *)&i2,NULL); 1634 1634 i+=i2; 1635 1635 } … … 1743 1743 1744 1744 //クラスに関するメモリを解放 1745 compiler. GetMeta().GetClasses().Clear();1745 compiler.objectModule.meta.GetClasses().Clear(); 1746 1746 } -
trunk/abdev/BasicCompiler64/NumOpe.cpp
r255 r257 25 25 SetStringQuotes( parameter ); 26 26 27 Operator_New( *compiler. GetMeta().GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.GetMeta().GetClasses().GetStringClassPtr() ) );27 Operator_New( *compiler.objectModule.meta.GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.objectModule.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. GetMeta().GetBlittableTypes().IsExist( leftType ) ){261 if( isClassName == false && compiler.objectModule.meta.GetBlittableTypes().IsExist( leftType ) ){ 262 262 // 左側のオブジェクト部分がBlittable型のとき 263 263 … … 265 265 lstrcpy( temporary, termLeft ); 266 266 sprintf( termLeft, "%s(%s)", 267 compiler. GetMeta().GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(),267 compiler.objectModule.meta.GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(), 268 268 temporary ); 269 269 } … … 293 293 294 294 if( pIsClassName ){ 295 if( compiler. GetMeta().GetClasses().Find( termFull ) ){295 if( compiler.objectModule.meta.GetClasses().Find( termFull ) ){ 296 296 *pIsClassName = true; 297 297 return true; … … 387 387 } 388 388 389 ConstMacro *pConstMacro = compiler. GetMeta().GetGlobalConstMacros().Find( procName );389 ConstMacro *pConstMacro = compiler.objectModule.meta.GetGlobalConstMacros().Find( procName ); 390 390 if( pConstMacro ) 391 391 { … … 574 574 } 575 575 576 i2 = compiler. GetDataTable().AddBinary( binary, num * tempBaseType.GetSize() );576 i2 = compiler.objectModule.dataTable.AddBinary( binary, num * tempBaseType.GetSize() ); 577 577 578 578 //mov reg,i2 … … 603 603 604 604 if(resultType.IsDouble()){ 605 i3 = compiler. GetDataTable().Add( i64data );605 i3 = compiler.objectModule.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. GetDataTable().Add( i32data );619 i3 = compiler.objectModule.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. GetMeta().GetClasses().GetStringClassPtr();800 index_stack[sp]=(LONG_PTR)compiler.objectModule.meta.GetClasses().GetStringClassPtr(); 801 801 bLiteralCalculation=0; 802 802 … … 811 811 bLiteralCalculation=0; 812 812 813 i2 = compiler. GetDataTable().AddString( term, i3 );813 i2 = compiler.objectModule.dataTable.AddString( term, i3 ); 814 814 815 815 //mov reg,i2 … … 904 904 } 905 905 else{ 906 index_stack[sp] = (LONG_PTR)compiler. GetMeta().GetClasses().GetObjectClassPtr();906 index_stack[sp] = (LONG_PTR)compiler.objectModule.meta.GetClasses().GetObjectClassPtr(); 907 907 } 908 908 … … 927 927 ////////////// 928 928 929 i3 = compiler. GetMeta().GetGlobalConsts().GetBasicType(term);929 i3 = compiler.objectModule.meta.GetGlobalConsts().GetBasicType(term); 930 930 if(i3){ 931 if( compiler. GetMeta().GetGlobalConsts().IsStringPtr( term ) ){931 if( compiler.objectModule.meta.GetGlobalConsts().IsStringPtr( term ) ){ 932 932 //リテラル文字列 933 933 934 double dbl = compiler. GetMeta().GetGlobalConsts().GetDoubleData(term);934 double dbl = compiler.objectModule.meta.GetGlobalConsts().GetDoubleData(term); 935 935 memcpy(&i64data,&dbl,sizeof(double)); 936 936 … … 946 946 if(IsRealNumberType(i3)){ 947 947 //実数 948 double dbl = compiler. GetMeta().GetGlobalConsts().GetDoubleData(term);948 double dbl = compiler.objectModule.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. GetMeta().GetGlobalConsts().GetWholeData(term);954 i64data = compiler.objectModule.meta.GetGlobalConsts().GetWholeData(term); 955 955 goto Literal; 956 956 } … … 993 993 } 994 994 else{ 995 i3 = compiler. GetDataTable().Add( i64data );995 i3 = compiler.objectModule.dataTable.Add( i64data ); 996 996 997 997 //movlpd xmm_reg,qword ptr[data table offset] … … 1015 1015 } 1016 1016 else{ 1017 i3=compiler. GetDataTable().Add( i32data );1017 i3=compiler.objectModule.dataTable.Add( i32data ); 1018 1018 1019 1019 //movss xmm_reg,dword ptr[data table offset] -
trunk/abdev/BasicCompiler64/NumOpe_Arithmetic.cpp
r242 r257 470 470 double dbl; 471 471 dbl=-1; 472 i32data = compiler. GetDataTable().Add( dbl );472 i32data = compiler.objectModule.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. GetDataTable().Add( flt );497 i32data = compiler.objectModule.dataTable.Add( flt ); 498 498 499 499 //mulss xmm_reg,dword ptr[data table offset] ※data = -1 -
trunk/abdev/BasicCompiler64/NumOpe_TypeOperation.cpp
r242 r257 89 89 //addsd xmm_reg,qword ptr[offset] ※offset value:43f0000000000000 90 90 _int64 i64data=0x43f0000000000000; 91 long temp=compiler. GetDataTable().Add( i64data );91 long temp=compiler.objectModule.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. GetDataTable().Add( i32data );151 long temp=compiler.objectModule.dataTable.Add( i32data ); 152 152 compiler.codeGenerator.PutOld( 153 153 (char)0xF3, -
trunk/abdev/BasicCompiler_Common/include/Linker.h
r256 r257 32 32 class Linker 33 33 { 34 // メタ情報 35 vector<const ObjectModule *> objectModules; 34 // データテーブルスケジュール 35 void ResolveDataTableSchedules( long dataSectionBaseOffset ); 36 37 // DLL関数スケジュール 38 void ResolveDllProcSchedules( long codeSectionBaseOffset, long importSectionBaseOffset ); 39 40 // ユーザ定義関数スケジュール 41 void ResolveUserProcSchedules( long codeSectionBaseOffset ); 42 43 // グローバル変数スケジュール 44 void ResolveGlobalVarSchedules( long rwSectionBaseOffset ); 45 46 NativeCode nativeCode; 47 48 DWORD imageBase; 49 50 public: 51 Linker() 52 { 53 } 54 55 void SetImageBase( DWORD imageBase ) 56 { 57 this->imageBase = imageBase; 58 } 59 60 // リンク 61 void Link( vector<ObjectModule *> &objectModules ); 36 62 }; -
trunk/abdev/BasicCompiler_Common/include/NativeCode.h
r256 r257 22 22 UserProc, // ユーザ定義関数呼び出し側スケジュール 23 23 AddressOf, // ユーザ定義関数位置スケジュール 24 DllProc, // DLL関数位置スケジュール 24 25 }; 25 26 … … 62 63 } 63 64 Schedule( const ::DllProc *pDllProc, long offest ) 64 : type( Schedule:: UserProc )65 : type( Schedule::DllProc ) 65 66 , offset( offset ) 66 67 , pDllProc( pDllProc ) … … 69 70 ~Schedule() 70 71 { 72 } 73 74 Type GetType() const 75 { 76 return type; 77 } 78 long GetOffset() const 79 { 80 return offset; 81 } 82 const ::DllProc &GetDllProc() const 83 { 84 if( type != Schedule::DllProc ) 85 { 86 SetError(); 87 } 88 return *pDllProc; 89 } 90 const ::UserProc &GetUserProc() const 91 { 92 if( type != Schedule::UserProc ) 93 { 94 SetError(); 95 } 96 return *pUserProc; 71 97 } 72 98 … … 188 214 return size; 189 215 } 216 const Schedules &GetSchedules() const 217 { 218 return schedules; 219 } 190 220 191 221 long GetLong( int codePos ) const … … 233 263 ObpPlus( size ); 234 264 } 235 void Put( const NativeCode &nativeCode ) 236 { 237 Put( nativeCode.codeBuffer, nativeCode.size ); 238 } 265 void Put( const NativeCode &nativeCode ); 239 266 void Put( _int64 i64data ) 240 267 { -
trunk/abdev/BasicCompiler_Common/include/Procedure.h
r225 r257 314 314 } 315 315 316 const NativeCode &GetNativeCode() const 317 { 318 return nativeCode; 319 } 316 320 NativeCode &GetNativeCode() 317 321 { -
trunk/abdev/BasicCompiler_Common/src/NativeCode.cpp
r250 r257 15 15 { 16 16 int test=0; 17 } 18 } 19 20 void NativeCode::Put( const NativeCode &nativeCode ) 21 { 22 long baseOffset = size; 23 24 Put( nativeCode.codeBuffer, nativeCode.size ); 25 26 BOOST_FOREACH( const Schedule &schedule, nativeCode.schedules ) 27 { 28 this->schedules.push_back( 29 Schedule( 30 schedule.GetType(), 31 baseOffset + schedule.GetOffset() 32 ) 33 ); 17 34 } 18 35 }
Note:
See TracChangeset
for help on using the changeset viewer.