Ignore:
Timestamp:
Aug 29, 2007, 9:05:22 AM (17 years ago)
Author:
dai_9181
Message:

静的リンクライブラリにより、複数のグローバル領域が存在することになったのでそれぞれを関数ベースに分けた

File:
1 edited

Legend:

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

    r266 r308  
    182182    else bDebugSupportProc=0;
    183183
    184     pUserProc->_beginOpAddressOld = obp;
    185 
    186184    //コンパイル中の関数が属するクラス
    187185    compiler.pCompilingClass=pUserProc->GetParentClassPtr();
     
    211209
    212210        //スタックフレーム管理用オブジェクトを初期化
    213         extern CStackFrame *pobj_sf;
    214         pobj_sf=new CStackFrame();
     211        extern StackFrame *pobj_sf;
     212        pobj_sf=new StackFrame();
    215213
    216214        SystemProc(*pUserProc);
     
    220218        pobj_sf=0;
    221219
    222         pUserProc->_endOpAddressOld = obp;
    223220        return;
    224221    }
     
    232229    //プロシージャ抜け出しスケジュール(Exit Sub/Function)
    233230    compiler.codeGenerator.exitSubCodePositions.clear();
    234     compiler.codeGenerator._exitSubCodePositions_ObpOld.clear();
    235231
    236232    //ラベル用のメモリを確保
     
    260256
    261257    //レキシカルスコープ情報を初期化
    262     compiler.codeGenerator.lexicalScopes.Init(obp);
     258    compiler.codeGenerator.lexicalScopes.Init( compiler.codeGenerator.GetNativeCodeSize() );
    263259
    264260
     
    271267        Parameter &param = *pUserProc->RealParams()[i3];
    272268
    273         Variable *pVar = new Variable( param.GetVarName(), param, false, param.IsRef(), "" );
     269        Variable *pVar = new Variable( param.GetVarName(), param, false, param.IsRef(), "", false );
    274270
    275271        if( param.IsArray() ){
     
    307303
    308304    //スタックフレーム管理用クラスを初期化
    309     extern CStackFrame *pobj_sf;
    310     pobj_sf=new CStackFrame();
     305    extern StackFrame *pobj_sf;
     306    pobj_sf=new StackFrame();
    311307
    312308
     
    390386        else{
    391387            if( pUserProc->ReturnType().IsObject() ){
    392                 sprintf(temporary,"%s=Nothing%c%c%s",temp,1,ESC_AS, Compiler::TypeToString( pUserProc->ReturnType() ).c_str() );
     388                sprintf(temporary,"%s=Nothing%c%c%s",temp,1,ESC_AS, compiler.TypeToString( pUserProc->ReturnType() ).c_str() );
    393389            }
    394390            else{
    395391                //戻り値用の変数の定義
    396                 sprintf(temporary,"%s%c%c%s",temp,1,ESC_AS, Compiler::TypeToString( pUserProc->ReturnType() ).c_str() );
     392                sprintf(temporary,"%s%c%c%s",temp,1,ESC_AS, compiler.TypeToString( pUserProc->ReturnType() ).c_str() );
    397393            }
    398394
     
    477473                        &compiler.pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc(),
    478474                        0,
    479                         "",
    480                         0);
     475                        "");
    481476                }
    482477            }
     
    553548                        &method->GetUserProc(),
    554549                        0,
    555                         "",
    556                         0);
     550                        "");
    557551                }
    558552            }
     
    612606        else if(IsWholeNumberType(i3)){
    613607            //整数型
    614             SetReg_WholeVariable(i3,&RelativeVar,REG_RAX);
     608            SetReg_WholeVariable(Type(i3),&RelativeVar,REG_RAX);
    615609        }
    616610        else SetError(300,NULL,cp);
     
    666660    delete pobj_sf;
    667661    pobj_sf=0;
    668 
    669 
    670     pUserProc->_endOpAddressOld = obp;
    671662
    672663
Note: See TracChangeset for help on using the changeset viewer.