- Timestamp:
- Aug 22, 2007, 11:23:28 PM (17 years ago)
- Location:
- trunk/abdev
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/BasicCompiler.vcproj
r288 r294 76 76 <Tool 77 77 Name="VCLinkerTool" 78 AdditionalDependencies="comctl32.lib psapi.lib commond.lib smoothied.lib "78 AdditionalDependencies="comctl32.lib psapi.lib commond.lib smoothied.lib imagehlp.lib" 79 79 OutputFile="../ActiveBasic/BasicCompiler32.exe" 80 80 LinkIncremental="2" … … 179 179 <Tool 180 180 Name="VCLinkerTool" 181 AdditionalDependencies="comctl32.lib psapi.lib common.lib smoothie.lib "181 AdditionalDependencies="comctl32.lib psapi.lib common.lib smoothie.lib imagehlp.lib" 182 182 OutputFile="../ActiveBasic/BasicCompiler32.exe" 183 183 LinkIncremental="1" -
trunk/abdev/BasicCompiler32/Compile_CallProc.cpp
r292 r294 135 135 else{ 136 136 if(dwFlags&PROCFLAG_NEW){ 137 GetVarType( ObjectName, leftType, false ); 138 137 139 //New演算子によるコンストラクタ呼び出し 138 140 pobj_c=pUserProc->GetParentClassPtr(); -
trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
r290 r294 507 507 compiler.codeGenerator.op_mov_RV_vtbl( REG_EAX, compiler.pCompilingClass ); 508 508 509 /* TODO: 消す510 //関数テーブルに値をセット511 int offset = (int)compiler.pCompilingClass->GetVtblGlobalOffset();512 513 //mov eax,offset514 compiler.codeGenerator.op_mov_RV( REG_EAX, offset, Schedule::DataTable );515 */516 517 509 //Thisポインタをecxにコピー 518 510 SetThisPtrToReg(REG_ECX); -
trunk/abdev/BasicCompiler32/MakePeHdr.cpp
r290 r294 2 2 3 3 #include <jenga/include/common/Environment.h> 4 #include <jenga/include/common/Path.h> 5 #include <jenga/include/common/Directory.h> 4 6 5 7 #include <jenga/include/smoothie/Smoothie.h> … … 381 383 382 384 383 384 //push ebp385 compiler.codeGenerator.op_push(REG_EBP);386 387 if(bDebugCompile){388 //デバッグ用の変数を定義389 // TODO: 暫定処理なので下のif文は正しくない 390 //if( compiler.IsStaticLibrary())385 if( compiler.IsCore() ) 386 { 387 // コアモジュール(basic.sbp)をコンパイルするとき 388 389 //push ebp 390 compiler.codeGenerator.op_push(REG_EBP); 391 392 if(bDebugCompile) 391 393 { 394 //デバッグ用の変数を定義 392 395 DebugVariable(); 393 396 } 394 } 395 396 //GC用の変数を定義 397 InitGCVariables(); 398 399 //if( compiler.IsStaticLibrary() ) 400 { 397 398 //GC用の変数を定義 399 InitGCVariables(); 400 401 401 //_System_StartupProgramの呼び出し 402 402 compiler.codeGenerator.op_call(pSub_System_StartupProgram); … … 497 497 // 静的リンクライブラリ 498 498 499 // 格納先ディレクトリを作る 500 Jenga::Common::Path path( OutputFileName ); 501 Jenga::Common::Directory dir( path.GetDriveName() + path.GetDirName(), true ); 502 503 // 書き込む 499 504 if( !compiler.GetObjectModule().Write( OutputFileName ) ) 500 505 { -
trunk/abdev/BasicCompiler_Common/BasicCompiler.cpp
r279 r294 778 778 } 779 779 780 //インクルードディレクトリが指定されなかったとき 781 if(szIncludeDir[0]=='\0'){ 782 lstrcpy(szIncludeDir,".\\Include\\"); 783 } 784 785 //インクルードディレクトリを絶対パスに変更 786 GetFullPath(szIncludeDir,(Jenga::Common::Environment::GetAppDir()+"\\").c_str()); 780 { 781 // カレントディレクトリを取得 782 char currentDirPath[MAX_PATH]; 783 GetCurrentDirectory( MAX_PATH, currentDirPath ); 784 if( currentDirPath[lstrlen(currentDirPath)-1] != '\\' ) 785 { 786 lstrcat( currentDirPath, "\\" ); 787 } 788 789 // インクルードディレクトリが指定されなかったとき 790 if(szIncludeDir[0]=='\0'){ 791 lstrcpy(szIncludeDir,".\\Include\\"); 792 793 // インクルードディレクトリを絶対パスに変更 794 GetFullPath(szIncludeDir,(Jenga::Common::Environment::GetAppDir()+"\\").c_str()); 795 } 796 else 797 { 798 // インクルードディレクトリを絶対パスに変更 799 GetFullPath(szIncludeDir,currentDirPath); 800 } 801 802 // ソースファイル名を絶対パスに変換 803 GetFullPath(SourceFileName,currentDirPath); 804 805 // 出力ファイル名を絶対パスに変換 806 GetFullPath(OutputFileName,currentDirPath); 807 } 787 808 788 809 if( compiler.IsDll() ){ -
trunk/abdev/BasicCompiler_Common/Intermediate_Step1.cpp
r287 r294 1 1 #include "stdafx.h" 2 3 #include <jenga/include/common/Path.h>4 2 5 3 #include <jenga/include/smoothie/Smoothie.h> … … 256 254 compiler.staticLibraryFilePaths.push_back( temporary ); 257 255 258 compiler.staticLibraries.push_back( new ObjectModule() ); 259 260 Jenga::Common::Path path( temporary ); 261 CompileMessage( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" を読み込みました。").c_str() ); 262 compiler.staticLibraries.back()->Read( temporary ); 256 for(;;i2++){ 257 if(basbuf[i2]=='\n'||basbuf[i2]=='\0') break; 258 } 259 SlideString(basbuf+i2,i-i2); 260 } 261 else if( lstrcmpi( temporary, "_core" ) == 0 ) 262 { 263 // #_core 264 // コアモジュール 265 compiler.SetCoreMark( true ); 263 266 264 267 for(;;i2++){ -
trunk/abdev/BasicCompiler_Common/MakeExe.cpp
r280 r294 2 2 3 3 #include <jenga/include/smoothie/Smoothie.h> 4 #include <jenga/include/common/Path.h> 4 5 5 6 #include <Compiler.h> … … 130 131 131 132 StepCompileProgress(); 133 134 135 ///////////////////////////////////////////////////////////////// 136 // 静的リンクライブラリをロードする 137 ///////////////////////////////////////////////////////////////// 138 139 if( !compiler.IsCore() ) 140 { 141 // コアモジュールをロードする 142 extern BOOL bDebugCompile; 143 extern char szIncludeDir[MAX_PATH]; 144 145 const char *coreFileName = "core.lib"; 146 if( bDebugCompile ) 147 { 148 coreFileName = "cored.lib"; 149 } 150 151 char coreFilePath[MAX_PATH]; 152 sprintf( coreFilePath, "..\\lib\\%s", coreFileName ); 153 GetFullPath( coreFilePath, szIncludeDir ); 154 155 compiler.staticLibraries.push_back( new ObjectModule() ); 156 compiler.staticLibraries.back()->Read( coreFilePath ); 157 } 158 159 BOOST_FOREACH( const std::string &filePath, compiler.staticLibraryFilePaths ) 160 { 161 compiler.staticLibraries.push_back( new ObjectModule() ); 162 compiler.staticLibraries.back()->Read( filePath ); 163 164 Jenga::Common::Path path( filePath ); 165 CompileMessage( ((string)"\"" + path.GetFileName() + path.GetExt() + "\" を読み込みました。").c_str() ); 166 } 132 167 133 168 -
trunk/abdev/BasicCompiler_Common/include/Compiler.h
r279 r294 24 24 , pNowObjectModule( pObjectModule ) 25 25 , targetModuleType( Exe ) 26 , isCore( false ) 26 27 { 27 28 } … … 110 111 111 112 113 // コアモジュールかどうか 114 bool isCore; 115 void SetCoreMark( bool isCore ) 116 { 117 this->isCore = isCore; 118 } 119 bool IsCore() const 120 { 121 return isCore; 122 } 123 124 112 125 static bool StringToType( const std::string &typeName, Type &type ); 113 126 static const std::string TypeToString( const Type &type ); -
trunk/abdev/BasicCompiler_Common/src/Source.cpp
r290 r294 815 815 816 816 // basic.sbpをインクルード 817 const char *headCode = "#include <basic.sbp>\n";818 //const char *headCode = "\n";817 //const char *headCode = "#include <basic.sbp>\n"; 818 const char *headCode = ""; 819 819 Realloc( length + lstrlen(headCode) ); 820 820 Text::SlideString( buffer, lstrlen(headCode) );
Note:
See TracChangeset
for help on using the changeset viewer.