Ignore:
Timestamp:
Jul 24, 2007, 7:11:26 PM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

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

    r225 r230  
    857857
    858858            //mov dword ptr[offset],eax
    859             OpBuffer[obp++]=(char)0xA3;
    860             *((long *)(OpBuffer+obp))=offset;
    861             pobj_GlobalVarSchedule->add();
    862             obp+=sizeof(long);
     859            compiler.codeGenerator.op_mov_MR( sizeof(long), REG_EAX, 0, offset, MOD_DISP32, Schedule::GlobalVar );
    863860        }
    864861        else{
     
    12501247        if(pRelativeVar->bOffsetOffset){
    12511248            //lea eax,dword ptr[ecx+offset]
    1252             OpBuffer[obp++]=(char)0x8D;
    1253             OpBuffer[obp++]=(char)0x81;
    1254             *((long *)(OpBuffer+obp))=pRelativeVar->offset;
    1255             pobj_GlobalVarSchedule->add();
    1256             obp+=sizeof(long);
     1249            compiler.codeGenerator.op_lea_RM( REG_EAX, REG_ECX, pRelativeVar->offset, MOD_BASE_DISP32, Schedule::GlobalVar );
    12571250        }
    12581251        else{
    12591252            //mov eax,offset
    1260             OpBuffer[obp++]=(char)0xB8;
    1261             *((long *)(OpBuffer+obp))=pRelativeVar->offset;
    1262             pobj_GlobalVarSchedule->add();
    1263             obp+=sizeof(long);
     1253            compiler.codeGenerator.op_mov_RV( REG_EAX, pRelativeVar->offset, Schedule::GlobalVar );
    12641254        }
    12651255    }
     
    12711261
    12721262            //add eax,dword ptr[offset]
    1273             compiler.codeGenerator.op_add_RM( sizeof(long), REG_EAX, REG_NON, (int)pRelativeVar->offset, MOD_DISP32 );
     1263            compiler.codeGenerator.op_add_RM( sizeof(long), REG_EAX, REG_NON, (int)pRelativeVar->offset, MOD_DISP32, Schedule::GlobalVar );
    12741264        }
    12751265        else{
    12761266            //mov eax,dword ptr[offset]
    1277             compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_NON, (int)pRelativeVar->offset, MOD_DISP32 );
    1278         }
    1279         obp-=sizeof(long);
    1280         pobj_GlobalVarSchedule->add();
    1281         obp+=sizeof(long);
     1267            compiler.codeGenerator.op_mov_RM( sizeof(long), REG_EAX, REG_NON, (int)pRelativeVar->offset, MOD_DISP32, Schedule::GlobalVar );
     1268        }
    12821269    }
    12831270    else if(pRelativeVar->dwKind==VAR_LOCAL){
    12841271        if(pRelativeVar->bOffsetOffset){
    12851272            //add ecx,offset
    1286             OpBuffer[obp++]=(char)0x81;
    1287             OpBuffer[obp++]=(char)0xC1;
    1288             *((long *)(OpBuffer+obp))=pRelativeVar->offset;
    1289             AddLocalVarAddrSchedule();
    1290             obp+=sizeof(long);
     1273            compiler.codeGenerator.op_add_RV( REG_ECX, pRelativeVar->offset, Schedule::LocalVar );
    12911274
    12921275            //lea eax,dword ptr[ebp+ecx]
     
    12971280        }
    12981281        else{
    1299             //lea eax,dword ptr[ebp+offset]
    1300             OpBuffer[obp++]=(char)0x8D;
    1301             OpBuffer[obp++]=(char)0x85;
    1302             *((long *)(OpBuffer+obp))=pRelativeVar->offset;
    1303             AddLocalVarAddrSchedule();
    1304             obp+=sizeof(long);
     1282            //lea eax,dword ptr[ecx+offset]
     1283            compiler.codeGenerator.op_lea_RM( REG_EAX, REG_EBP, pRelativeVar->offset, MOD_BASE_DISP32, Schedule::LocalVar );
    13051284        }
    13061285    }
Note: See TracChangeset for help on using the changeset viewer.