Ignore:
Timestamp:
Jul 24, 2007, 11:35:33 AM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

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

    r225 r229  
    1010        if(pRelativeVar->bOffsetOffset){
    1111            //fld ptr[ecx+offset]
    12             compiler.codeGenerator.op_fld_base_offset(type,REG_ECX,(int)pRelativeVar->offset);
    13             obp-=sizeof(long);
    14             pobj_GlobalVarSchedule->add();
    15             obp+=sizeof(long);
     12            compiler.codeGenerator.op_fld_base_offset(type,REG_ECX,(int)pRelativeVar->offset, Schedule::GlobalVar );
    1613        }
    1714        else{
    1815            //mov ecx,offset
    19             compiler.codeGenerator.op_mov_RV(REG_ECX,(int)pRelativeVar->offset);
    20             obp-=sizeof(long);
    21             pobj_GlobalVarSchedule->add();
    22             obp+=sizeof(long);
     16            compiler.codeGenerator.op_mov_RV(REG_ECX,(int)pRelativeVar->offset, Schedule::GlobalVar );
    2317
    2418            //fld ptr[ecx]
     
    3226        if(pRelativeVar->bOffsetOffset){
    3327            //fld ptr[ebp+ecx+offset]
    34             compiler.codeGenerator.op_fld_base_offset_ex(type,REG_EBP,REG_ECX,(int)pRelativeVar->offset,USE_OFFSET);
    35             obp-=sizeof(long);
    36             AddLocalVarAddrSchedule();
    37             obp+=sizeof(long);
     28            compiler.codeGenerator.op_fld_base_offset_ex(type,REG_EBP,REG_ECX,(int)pRelativeVar->offset,USE_OFFSET, Schedule::LocalVar );
    3829        }
    3930        else{
    4031            //fld ptr[ebp+offset]
    41             compiler.codeGenerator.op_fld_base_offset(type,REG_EBP,(int)pRelativeVar->offset);
    42             obp-=sizeof(long);
    43             AddLocalVarAddrSchedule();
    44             obp+=sizeof(long);
     32            compiler.codeGenerator.op_fld_base_offset(type,REG_EBP,(int)pRelativeVar->offset, Schedule::LocalVar );
    4533        }
    4634    }
     
    4836        if(pRelativeVar->bOffsetOffset){
    4937            //add ecx,qword ptr[ebp+offset]
    50             compiler.codeGenerator.op_add_RM(sizeof(long),REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
    51             obp-=sizeof(long);
    52             AddLocalVarAddrSchedule();
    53             obp+=sizeof(long);
     38            compiler.codeGenerator.op_add_RM(sizeof(long),REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
    5439        }
    5540        else{
    5641            //mov ecx,qword ptr[ebp+offset]
    57             compiler.codeGenerator.op_mov_RM(sizeof(long),REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
    58             obp-=sizeof(long);
    59             AddLocalVarAddrSchedule();
    60             obp+=sizeof(long);
     42            compiler.codeGenerator.op_mov_RM(sizeof(long),REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
    6143        }
    6244
     
    9880        if(pRelativeVar->bOffsetOffset){
    9981            //mov reg, ptr[ecx+offset]
    100             compiler.codeGenerator.op_mov_RM(varSize,reg,REG_ECX,(int)pRelativeVar->offset + offsetOf64Head,MOD_BASE_DISP32);
     82            compiler.codeGenerator.op_mov_RM(varSize,reg,REG_ECX,(int)pRelativeVar->offset + offsetOf64Head,MOD_BASE_DISP32, Schedule::GlobalVar );
    10183        }
    10284        else{
    10385            //mov reg, ptr[offset]
    104             compiler.codeGenerator.op_mov_RM(varSize,reg,0,(int)pRelativeVar->offset + offsetOf64Head,MOD_DISP32);
    105         }
    106         obp-=sizeof(long);
    107         pobj_GlobalVarSchedule->add();
    108         obp+=sizeof(long);
     86            compiler.codeGenerator.op_mov_RM(varSize,reg,0,(int)pRelativeVar->offset + offsetOf64Head,MOD_DISP32, Schedule::GlobalVar );
     87        }
    10988    }
    11089    else if(pRelativeVar->dwKind==VAR_REFGLOBAL){
    11190        if(pRelativeVar->bOffsetOffset){
    11291            //add ecx,qword ptr[offset]
    113             compiler.codeGenerator.op_add_RM(varSize,REG_ECX,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
     92            compiler.codeGenerator.op_add_RM(varSize,REG_ECX,REG_NON,(int)pRelativeVar->offset,MOD_DISP32, Schedule::GlobalVar );
    11493        }
    11594        else{
    11695            //mov ecx,qword ptr[offset]
    117             compiler.codeGenerator.op_mov_RM(varSize,REG_ECX,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
    118         }
    119         obp-=sizeof(long);
    120         pobj_GlobalVarSchedule->add();
    121         obp+=sizeof(long);
     96            compiler.codeGenerator.op_mov_RM(varSize,REG_ECX,REG_NON,(int)pRelativeVar->offset,MOD_DISP32, Schedule::GlobalVar );
     97        }
    12298
    12399        goto directmem;
     
    126102        if(pRelativeVar->bOffsetOffset){
    127103            //mov reg, ptr[ebp+ecx+offset]
    128             compiler.codeGenerator.op_mov_RM_ex(varSize,reg,REG_EBP,REG_ECX,(int)pRelativeVar->offset + offsetOf64Head,USE_OFFSET);
     104            compiler.codeGenerator.op_mov_RM_ex(varSize,reg,REG_EBP,REG_ECX,(int)pRelativeVar->offset + offsetOf64Head,USE_OFFSET, Schedule::LocalVar );
    129105        }
    130106        else{
    131107            //mov reg, ptr[ebp+offset]
    132             compiler.codeGenerator.op_mov_RM(varSize,reg,REG_EBP,(int)pRelativeVar->offset + offsetOf64Head,MOD_BASE_DISP32);
    133         }
    134         obp-=sizeof(long);
    135         AddLocalVarAddrSchedule();
    136         obp+=sizeof(long);
     108            compiler.codeGenerator.op_mov_RM(varSize,reg,REG_EBP,(int)pRelativeVar->offset + offsetOf64Head,MOD_BASE_DISP32, Schedule::LocalVar );
     109        }
    137110    }
    138111    else if(pRelativeVar->dwKind==VAR_REFLOCAL){
    139112        if(pRelativeVar->bOffsetOffset){
    140113            //add ecx,qword ptr[ebp+offset]
    141             compiler.codeGenerator.op_add_RM(varSize,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
     114            compiler.codeGenerator.op_add_RM(varSize,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
    142115        }
    143116        else{
    144117            //mov ecx,qword ptr[ebp+offset]
    145             compiler.codeGenerator.op_mov_RM(varSize,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
    146         }
    147         obp-=sizeof(long);
    148         AddLocalVarAddrSchedule();
    149         obp+=sizeof(long);
     118            compiler.codeGenerator.op_mov_RM(varSize,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32, Schedule::LocalVar );
     119        }
    150120
    151121        goto directmem;
     
    170140        if(pRelativeVar->bOffsetOffset){
    171141            //push dword ptr[ecx+offset]
    172             OpBuffer[obp++]=(char)0xFF;
    173             OpBuffer[obp++]=(char)0xB1;
    174             *((long *)(OpBuffer+obp))=pRelativeVar->offset;
    175             pobj_GlobalVarSchedule->add();
    176             obp+=sizeof(long);
     142            compiler.codeGenerator.op_push_M( REG_ECX, pRelativeVar->offset, Schedule::GlobalVar );
    177143        }
    178144        else{
    179145            //push dword ptr[offset]
    180             OpBuffer[obp++]=(char)0xFF;
    181             OpBuffer[obp++]=(char)0x35;
    182             *((long *)(OpBuffer+obp))=pRelativeVar->offset;
    183             pobj_GlobalVarSchedule->add();
    184             obp+=sizeof(long);
     146            compiler.codeGenerator.op_push_M( REG_NON, pRelativeVar->offset, Schedule::GlobalVar );
    185147        }
    186148    }
    187149    else if(pRelativeVar->dwKind==VAR_REFGLOBAL){
    188150        //mov eax,dword ptr[offset]
    189         compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_NON, (int)pRelativeVar->offset, MOD_DISP32 );
    190         obp-=sizeof(long);
    191         pobj_GlobalVarSchedule->add();
    192         obp+=sizeof(long);
     151        compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_NON, (int)pRelativeVar->offset, MOD_DISP32, Schedule::GlobalVar );
    193152
    194153        if(pRelativeVar->bOffsetOffset){
Note: See TracChangeset for help on using the changeset viewer.