Changeset 309 in dev for trunk/abdev/BasicCompiler64/MakePeHdr.cpp
- Timestamp:
- Aug 29, 2007, 9:19:17 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler64/MakePeHdr.cpp
r308 r309 24 24 const UserProc 25 25 *pSub_System_StartupProgram, 26 *pSub_System_GlobalArea, 26 27 *pSub_DebugSys_StartProc, 27 28 *pSub_DebugSys_EndProc, … … 224 225 pSub_System_StartupProgram->Using(); 225 226 227 if(pSub_System_GlobalArea=GetSubHash(compiler.globalAreaProcName.c_str(),1)) 228 { 229 pSub_System_GlobalArea->Using(); 230 pSub_System_GlobalArea->ThisIsAutoGenerationProc(); 231 } 232 226 233 if(pSub_DebugSys_StartProc=GetSubHash("_DebugSys_StartProc",1)) 227 234 pSub_DebugSys_StartProc->Using(); … … 344 351 345 352 //スタックフレーム管理用クラスを選択 346 pobj_sf = &compiler.GetObjectModule().globalStackFrame;353 pobj_sf=new StackFrame(); 347 354 348 355 // コード生成対象を選択 … … 358 365 { 359 366 //sub rsp,スタックフレームサイズ 360 co nst PertialSchedule *pStackFramePertialSchedule = compiler.codeGenerator.op_sub_rsp( 0, true);367 compiler.codeGenerator.op_sub_RV( sizeof(_int64), REG_RSP, 0x100 ); 361 368 362 369 if(bDebugCompile){ … … 372 379 } 373 380 374 //クラスに属する静的メンバを定義 375 compiler.GetObjectModule().meta.GetClasses().InitStaticMember(); 376 377 //グローバル実行領域をコンパイル開始 378 CompileBuffer(0,0); 379 380 //Goto未知ラベルスケジュールが存在したらエラーにする 381 BOOST_FOREACH( const GotoLabelSchedule *pGotoLabelSchedule, compiler.codeGenerator.gotoLabelSchedules ) 382 { 383 if(pGotoLabelSchedule->GetName().size()>0){ 384 SetError(6,pGotoLabelSchedule->GetName(),pGotoLabelSchedule->GetSourceCodePos()); 385 } 386 else{ 387 sprintf(temporary,"%d",pGotoLabelSchedule->GetLineNum()); 388 SetError(6,temporary,pGotoLabelSchedule->GetSourceCodePos()); 389 } 390 } 381 // _System_GlobalArea の呼び出し 382 compiler.codeGenerator.op_call( pSub_System_GlobalArea ); 391 383 392 384 … … 403 395 404 396 //add rsp,スタックフレームサイズ 405 int stackFrameSize = pobj_sf->GetFrameSize(0); 406 compiler.codeGenerator.op_add_RV( REG_RSP, stackFrameSize ); 397 compiler.codeGenerator.op_add_RV( REG_RSP, 0x100 ); 407 398 408 399 //xor rax,rax(raxを0に初期化する) … … 411 402 //ret 412 403 compiler.codeGenerator.op_ret(); 413 414 //スタックフレームスケジュール(subコマンドに渡す値) 415 compiler.codeGenerator.opfix( pStackFramePertialSchedule, stackFrameSize ); 416 417 //スタックフレームスケジュールを実行 418 pobj_sf->RunningSchedule( stackFrameSize ); 419 pobj_sf=0; 420 } 404 } 405 406 //スタックフレームスケジュールを実行 407 pobj_sf->RunningSchedule( 0x100 ); 408 delete pobj_sf; 409 pobj_sf=0; 421 410 422 411 //グローバル実行領域のコードサイズ
Note:
See TracChangeset
for help on using the changeset viewer.