Ignore:
Timestamp:
Jul 30, 2007, 4:12:54 PM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

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

    r231 r253  
    2626        if(pRelativeVar->bOffsetOffset){
    2727            //fld ptr[ebp+ecx+offset]
    28             compiler.codeGenerator.op_fld_base_offset_ex(type,REG_EBP,REG_ECX,(int)pRelativeVar->offset,USE_OFFSET, Schedule::LocalVar );
     28            compiler.codeGenerator.localVarPertialSchedules.push_back(
     29                compiler.codeGenerator.op_fld_base_offset_ex(type,REG_EBP,REG_ECX,(int)pRelativeVar->offset,USE_OFFSET, Schedule::None, true )
     30            );
    2931        }
    3032        else{
    3133            //fld ptr[ebp+offset]
    32             compiler.codeGenerator.op_fld_base_offset(type,REG_EBP,(int)pRelativeVar->offset, Schedule::LocalVar );
     34            compiler.codeGenerator.localVarPertialSchedules.push_back(
     35                compiler.codeGenerator.op_fld_base_offset(type,REG_EBP,(int)pRelativeVar->offset, Schedule::None, true )
     36            );
    3337        }
    3438    }
     
    3640        if(pRelativeVar->bOffsetOffset){
    3741            //add ecx,qword ptr[ebp+offset]
    38             compiler.codeGenerator.op_add_RM(sizeof(long),REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
     42            compiler.codeGenerator.localVarPertialSchedules.push_back(
     43                compiler.codeGenerator.op_add_RM(sizeof(long),REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::None, true )
     44            );
    3945        }
    4046        else{
    4147            //mov ecx,qword ptr[ebp+offset]
    42             compiler.codeGenerator.op_mov_RM(sizeof(long),REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
     48            compiler.codeGenerator.localVarPertialSchedules.push_back(
     49                compiler.codeGenerator.op_mov_RM(sizeof(long),REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::None, true )
     50            );
    4351        }
    4452
     
    102110        if(pRelativeVar->bOffsetOffset){
    103111            //mov reg, ptr[ebp+ecx+offset]
    104             compiler.codeGenerator.op_mov_RM_ex(varSize,reg,REG_EBP,REG_ECX,(int)pRelativeVar->offset + offsetOf64Head,USE_OFFSET, Schedule::LocalVar );
     112            compiler.codeGenerator.localVarPertialSchedules.push_back(
     113                compiler.codeGenerator.op_mov_RM_ex(varSize,reg,REG_EBP,REG_ECX,(int)pRelativeVar->offset + offsetOf64Head,USE_OFFSET, Schedule::None, true )
     114            );
    105115        }
    106116        else{
    107117            //mov reg, ptr[ebp+offset]
    108             compiler.codeGenerator.op_mov_RM(varSize,reg,REG_EBP,(int)pRelativeVar->offset + offsetOf64Head,MOD_BASE_DISP32, Schedule::LocalVar );
     118            compiler.codeGenerator.localVarPertialSchedules.push_back(
     119                compiler.codeGenerator.op_mov_RM(varSize,reg,REG_EBP,(int)pRelativeVar->offset + offsetOf64Head,MOD_BASE_DISP32, Schedule::None, true )
     120            );
    109121        }
    110122    }
     
    112124        if(pRelativeVar->bOffsetOffset){
    113125            //add ecx,qword ptr[ebp+offset]
    114             compiler.codeGenerator.op_add_RM(varSize,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
     126            compiler.codeGenerator.localVarPertialSchedules.push_back(
     127                compiler.codeGenerator.op_add_RM(varSize,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::None, true )
     128            );
    115129        }
    116130        else{
    117131            //mov ecx,qword ptr[ebp+offset]
    118             compiler.codeGenerator.op_mov_RM(varSize,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
     132            compiler.codeGenerator.localVarPertialSchedules.push_back(
     133                compiler.codeGenerator.op_mov_RM(varSize,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::None, true )
     134            );
    119135        }
    120136
     
    162178        if(pRelativeVar->bOffsetOffset){
    163179            //add ecx,offset
    164             compiler.codeGenerator.op_add_RV( REG_ECX, pRelativeVar->offset, Schedule::LocalVar );
     180            compiler.codeGenerator.localVarPertialSchedules.push_back(
     181                compiler.codeGenerator.op_add_RV( REG_ECX, pRelativeVar->offset, Schedule::None, true )
     182            );
    165183
    166184            //push dword ptr[ebp+ecx]
     
    174192        else{
    175193            //push dword ptr[ebp+offset]
    176             compiler.codeGenerator.op_push_M( REG_EBP, pRelativeVar->offset, Schedule::LocalVar );
     194            compiler.codeGenerator.localVarPertialSchedules.push_back(
     195                compiler.codeGenerator.op_push_M( REG_EBP, pRelativeVar->offset, Schedule::None, true )
     196            );
    177197        }
    178198    }
    179199    else if(pRelativeVar->dwKind==VAR_REFLOCAL){
    180200        //mov eax,dword ptr[ebp+offset]
    181         compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_EBP, pRelativeVar->offset, MOD_BASE_DISP32, Schedule::LocalVar );
     201        compiler.codeGenerator.localVarPertialSchedules.push_back(
     202            compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_EBP, pRelativeVar->offset, MOD_BASE_DISP32, Schedule::None, true )
     203        );
    182204
    183205        if(pRelativeVar->bOffsetOffset){
Note: See TracChangeset for help on using the changeset viewer.