Changeset 73 in dev for BasicCompiler32/Compile_ProcOp.cpp


Ignore:
Timestamp:
Mar 16, 2007, 11:07:14 PM (17 years ago)
Author:
dai_9181
Message:

Parameterクラスを適用。32bit側は動くようになったので、64bitのほうを調整する。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/Compile_ProcOp.cpp

    r64 r73  
    214214}
    215215
    216 void CompileBufferInProcedure(SUBINFO *psi){
     216void CompileBufferInProcedure(SubInfo *psi){
    217217    extern char *basbuf;
    218218    extern HANDLE hHeap;
    219     extern SUBINFO **ppSubHash;
     219    extern SubInfo **ppSubHash;
    220220    extern BOOL bDebugCompile;
    221221    int i3,i4,VarSize,LocalVarSchedule,EspOffsetSchedule,BufferSize,BaseOffset;
     
    280280
    281281    //パラメータ用の変数データを考慮
    282     for(i3=psi->RealParmNum-1;i3>=0;i3--){
     282    for(i3=psi->realParams.size()-1;i3>=0;i3--){
     283        Parameter &param = *psi->realParams[i3];
     284
    283285        //変数データを追加
    284286        LocalVar=(VARIABLE *)HeapReAlloc(hHeap,0,LocalVar,(MaxLocalVarNum+1)*sizeof(VARIABLE));
    285287
    286         lstrcpy(LocalVar[MaxLocalVarNum].name,psi->pRealParmInfo[i3].name);
     288        lstrcpy( LocalVar[MaxLocalVarNum].name,param.GetVarName().c_str() );
    287289
    288290        // TODO: パラメータのConst定義の指定が未完成
    289291        LocalVar[MaxLocalVarNum].bConst=false;
    290292
    291         LocalVar[MaxLocalVarNum].bArray=psi->pRealParmInfo[i3].bArray;
    292         memcpy(LocalVar[MaxLocalVarNum].SubScripts,psi->pRealParmInfo[i3].SubScripts,MAX_ARRAYDIM*sizeof(int));
    293 
    294         LocalVar[MaxLocalVarNum].type=psi->pRealParmInfo[i3].type;
     293        LocalVar[MaxLocalVarNum].bArray=param.IsArray()?TRUE:FALSE;
     294        memcpy(LocalVar[MaxLocalVarNum].SubScripts,param.GetSubScriptsPtr(),MAX_ARRAYDIM*sizeof(int));
     295
     296        LocalVar[MaxLocalVarNum].type=param.GetBasicType();
    295297        if(LocalVar[MaxLocalVarNum].type==DEF_OBJECT
    296298            ||LocalVar[MaxLocalVarNum].type==DEF_STRUCT){
     
    299301        }
    300302
    301         LocalVar[MaxLocalVarNum].u.index=psi->pRealParmInfo[i3].u.index;
    302 
    303         if(psi->pRealParmInfo[i3].bByVal&&psi->pRealParmInfo[i3].type==DEF_STRUCT){
     303        LocalVar[MaxLocalVarNum].u.index=param.GetIndex();
     304
     305        if( param.IsRef() == false && param.IsStruct() ){
    304306            //構造体のByValパラメータ
    305307            LocalVar[MaxLocalVarNum].fRef=REF_PARAMETER | OBJECT_PARAMETER;
     
    307309        }
    308310        else{
    309             if(psi->pRealParmInfo[i3].bByVal&&psi->pRealParmInfo[i3].bArray==0){
     311            if( param.IsRef() == false && param.IsArray() == false ){
    310312                LocalVar[MaxLocalVarNum].fRef=0;
    311313                VarSize=GetTypeSize(LocalVar[MaxLocalVarNum].type,LocalVar[MaxLocalVarNum].u.index);
     
    344346
    345347    //コンパイル中の関数
    346     extern SUBINFO *pCompilingSubInfo;
     348    extern SubInfo *pCompilingSubInfo;
    347349    pCompilingSubInfo=psi;
    348350
     
    442444
    443445        //call _DebugSys_StartProc
    444         extern SUBINFO *pSub_DebugSys_StartProc;
     446        extern SubInfo *pSub_DebugSys_StartProc;
    445447        op_call(pSub_DebugSys_StartProc);
    446448    }
     
    684686
    685687        //call _DebugSys_EndProc
    686         extern SUBINFO *pSub_DebugSys_EndProc;
     688        extern SubInfo *pSub_DebugSys_EndProc;
    687689        op_call(pSub_DebugSys_EndProc);
    688690    }
     
    806808
    807809        //call _esp_error
    808         extern SUBINFO *pSub_esp_error;
     810        extern SubInfo *pSub_esp_error;
    809811        op_call( pSub_esp_error );
    810812
     
    840842}
    841843void CompileLocal(){
    842     extern SUBINFO **ppSubHash;
     844    extern SubInfo **ppSubHash;
    843845    int i2;
    844     SUBINFO *psi;
     846    SubInfo *psi;
    845847
    846848    extern BOOL bDll;
     
    856858    //_System_InitStaticLocalVariablesは一番最後にコンパイル
    857859    //※一般関数内の静的変数オブジェクトをすべて収集しなければならない
    858     extern SUBINFO *pSub_System_InitStaticLocalVariables;
     860    extern SubInfo *pSub_System_InitStaticLocalVariables;
    859861    pSub_System_InitStaticLocalVariables->bCompile=1;
    860862
    861863    //_System_Call_Destructor_of_GlobalObjectは一番最後にコンパイル
    862     extern SUBINFO *pSub_System_Call_Destructor_of_GlobalObject;
     864    extern SubInfo *pSub_System_Call_Destructor_of_GlobalObject;
    863865    pSub_System_Call_Destructor_of_GlobalObject->bCompile=1;
    864866
Note: See TracChangeset for help on using the changeset viewer.