Ignore:
Timestamp:
Aug 29, 2007, 9:19:17 AM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler64/MakePeHdr.cpp

    r308 r309  
    2424const UserProc
    2525    *pSub_System_StartupProgram,
     26    *pSub_System_GlobalArea,
    2627    *pSub_DebugSys_StartProc,
    2728    *pSub_DebugSys_EndProc,
     
    224225        pSub_System_StartupProgram->Using();
    225226
     227    if(pSub_System_GlobalArea=GetSubHash(compiler.globalAreaProcName.c_str(),1))
     228    {
     229        pSub_System_GlobalArea->Using();
     230        pSub_System_GlobalArea->ThisIsAutoGenerationProc();
     231    }
     232
    226233    if(pSub_DebugSys_StartProc=GetSubHash("_DebugSys_StartProc",1))
    227234        pSub_DebugSys_StartProc->Using();
     
    344351
    345352        //スタックフレーム管理用クラスを選択
    346         pobj_sf = &compiler.GetObjectModule().globalStackFrame;
     353        pobj_sf=new StackFrame();
    347354
    348355        // コード生成対象を選択
     
    358365        {
    359366            //sub rsp,スタックフレームサイズ
    360             const PertialSchedule *pStackFramePertialSchedule = compiler.codeGenerator.op_sub_rsp( 0, true );
     367            compiler.codeGenerator.op_sub_RV( sizeof(_int64), REG_RSP, 0x100 );
    361368
    362369            if(bDebugCompile){
     
    372379        }
    373380
    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 );
    391383
    392384
     
    403395
    404396            //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 );
    407398
    408399            //xor rax,rax(raxを0に初期化する)
     
    411402            //ret
    412403            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;
    421410
    422411        //グローバル実行領域のコードサイズ
Note: See TracChangeset for help on using the changeset viewer.