Ignore:
Timestamp:
Jul 27, 2007, 12:06:11 AM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

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

    r237 r241  
    140140
    141141        //add dword ptr[esp],eax
    142         OpBuffer[obp++]=(char)0x01;
    143         OpBuffer[obp++]=(char)0x04;
    144         OpBuffer[obp++]=(char)0x24;
     142        compiler.codeGenerator.PutOld(
     143            (char)0x01,
     144            (char)0x04,
     145            (char)0x24
     146        );
    145147
    146148        HeapDefaultFree(pParm[i]);
     
    238240    if(offset){
    239241        //add ecx,offset
    240         OpBuffer[obp++]=(char)0x81;
    241         OpBuffer[obp++]=(char)0xC1;
    242         *((long *)(OpBuffer+obp))=offset;
    243         obp+=sizeof(long);
     242        compiler.codeGenerator.op_add_RV( REG_ECX, offset );
    244243    }
    245244
     
    314313
    315314                //mov ecx,dword ptr[ecx]
    316                 OpBuffer[obp++]=(char)0x8B;
    317                 OpBuffer[obp++]=(char)0x09;
     315                compiler.codeGenerator.op_mov_RM( sizeof(long), REG_ECX, REG_ECX, 0, MOD_BASE );
    318316            }
    319317            else{
     
    669667
    670668                //mov ecx,dword ptr[eax]
    671                 OpBuffer[obp++]=(char)0x8B;
    672                 OpBuffer[obp++]=(char)0x08;
     669                compiler.codeGenerator.op_mov_RM( sizeof(long), REG_ECX, REG_EAX, 0, MOD_BASE );
    673670            }
    674671        }
     
    690687
    691688                //mov ecx,dword ptr[eax]
    692                 OpBuffer[obp++]=(char)0x8B;
    693                 OpBuffer[obp++]=(char)0x08;
     689                compiler.codeGenerator.op_mov_RM( sizeof(long), REG_ECX, REG_EAX, 0, MOD_BASE );
    694690            }
    695691            else{
     
    964960    if( type.IsDouble() ){
    965961        //mov eax,HILONG(dbl)
    966         OpBuffer[obp++]=(char)0xB8;
    967         *((long *)(OpBuffer+obp))=(long)*(long *)(((char *)(&dbl))+4);
    968         obp+=sizeof(long);
     962        compiler.codeGenerator.op_mov_RV( REG_EAX, *(long *)(((char *)(&dbl))+4) );
    969963
    970964        //mov dword ptr[ebp+offset+sizeof(long)],eax
     
    11331127
    11341128            //mov eax,ebp
    1135             OpBuffer[obp++]=(char)0x8B;
    1136             OpBuffer[obp++]=(char)0xC5;
     1129            compiler.codeGenerator.op_mov_RR( REG_EAX, REG_EBP );
    11371130
    11381131            //add eax,offset
     
    11921185        if(pRelativeVar->bOffsetOffset){
    11931186            //mov eax,ecx
    1194             OpBuffer[obp++]=(char)0x8B;
    1195             OpBuffer[obp++]=(char)0xC1;
     1187            compiler.codeGenerator.op_mov_RR( REG_EAX, REG_ECX );
    11961188
    11971189            //add eax,dword ptr[offset]
     
    12091201
    12101202            //lea eax,dword ptr[ebp+ecx]
    1211             OpBuffer[obp++]=(char)0x8D;
    1212             OpBuffer[obp++]=(char)0x44;
    1213             OpBuffer[obp++]=(char)0x0D;
    1214             OpBuffer[obp++]=(char)0x00;
     1203            compiler.codeGenerator.PutOld(
     1204                (char)0x8D,
     1205                (char)0x44,
     1206                (char)0x0D,
     1207                (char)0x00
     1208            );
    12151209        }
    12161210        else{
Note: See TracChangeset for help on using the changeset viewer.