Ignore:
Timestamp:
Oct 9, 2007, 1:10:33 AM (17 years ago)
Author:
dai_9181
Message:

vtblの構造を変更。vtblMasterListをはさんでvtblを表現した。
その他メンバ名変更。
ClassPrototypeクラスを追加。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/Compile_Func.cpp

    r339 r342  
    274274        //                ->func3
    275275
     276        // vtblマスターリストのポインタを取得
    276277        //mov edx,dword ptr[ecx]
    277278        compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EDX, REG_ECX, 0, MOD_BASE );
    278 
    279         int i2 = pobj_c->GetFuncNumInVtbl( &userProc );
     279       
     280        // vtblのポインタを取得
     281        //mov edx,dword ptr[edx+vtblMasterListIndex]
     282        int vtblMasterListIndex = pobj_c->GetVtblMasterListIndex( &userProc );
     283        compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EDX, REG_EDX, vtblMasterListIndex, MOD_BASE_DISP32 );
     284
     285        int vtblIndex = pobj_c->GetFuncNumInVtbl( &userProc );
    280286
    281287        //mov eax,dword ptr[edx+func_index]
    282         if(i2*PTR_SIZE<=0x7F){
    283             compiler.codeGenerator.op_mov_RM(sizeof(long),REG_EAX,REG_EDX,i2*PTR_SIZE,MOD_BASE_DISP8);
     288        if( vtblIndex * PTR_SIZE <= 0x7F )
     289        {
     290            compiler.codeGenerator.op_mov_RM(sizeof(long),REG_EAX,REG_EDX,vtblIndex*PTR_SIZE,MOD_BASE_DISP8);
    284291        }
    285292        else{
    286             compiler.codeGenerator.op_mov_RM(sizeof(long),REG_EAX,REG_EDX,i2*PTR_SIZE,MOD_BASE_DISP32);
     293            compiler.codeGenerator.op_mov_RM(sizeof(long),REG_EAX,REG_EDX,vtblIndex*PTR_SIZE,MOD_BASE_DISP32);
    287294        }
    288295    }
Note: See TracChangeset for help on using the changeset viewer.