Ignore:
Timestamp:
Jul 22, 2007, 4:58:47 AM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler64/Compile_Set_Var.cpp

    r206 r226  
    11#include "stdafx.h"
     2
     3#include <Compiler.h>
    24
    35#include "../BasicCompiler_Common/common.h"
     
    2426        if( calcType.IsDouble() ){
    2527            //movlsd RightTermReg,xmm0
    26             op_movsd_RR(RightTermReg,REG_XMM0);
     28            compiler.codeGenerator.op_movsd_RR(RightTermReg,REG_XMM0);
    2729        }
    2830        else if( calcType.IsSingle() ){
    2931            //movlss RightTermReg,xmm0
    30             op_movss_RR(RightTermReg,REG_XMM0);
     32            compiler.codeGenerator.op_movss_RR(RightTermReg,REG_XMM0);
    3133        }
    3234    }
     
    3537
    3638        //mov RightTermReg,rax
    37         op_mov_RR(RightTermReg,REG_RAX);
     39        compiler.codeGenerator.op_mov_RR(RightTermReg,REG_RAX);
    3840    }
    3941
     
    5759
    5860                //mov rsi,RightTermReg
    59                 op_mov_RR(REG_RSI,RightTermReg);
     61                compiler.codeGenerator.op_mov_RR(REG_RSI,RightTermReg);
    6062
    6163                //mov rdi,VarReg
    62                 op_mov_RR(REG_RDI,VarReg);
     64                compiler.codeGenerator.op_mov_RR(REG_RDI,VarReg);
    6365
    6466                int object_size = varType.GetClass().GetSize();
    6567
    6668                //mov rcx,object_size
    67                 op_mov_RV(sizeof(_int64),REG_RCX,object_size);
     69                compiler.codeGenerator.op_mov_RV(sizeof(_int64),REG_RCX,object_size);
    6870
    6971                if(bUseHeap){
    7072                    //mov rax,rsi
    71                     op_mov_RR(REG_RAX,REG_RSI);
     73                    compiler.codeGenerator.op_mov_RR(REG_RAX,REG_RSI);
    7274                }
    7375
    7476                //rep movs byte ptr[rdi],byte ptr[rsi]
    75                 op_rep_movs(sizeof(BYTE));
     77                compiler.codeGenerator.op_rep_movs(sizeof(BYTE));
    7678
    7779                if(bUseHeap){
    7880                    //mov rcx,rax
    79                     op_mov_RR(REG_RCX,REG_RAX);
     81                    compiler.codeGenerator.op_mov_RR(REG_RCX,REG_RAX);
    8082
    8183                    //call free
    8284                    extern const UserProc *pSub_free;
    83                     op_call(pSub_free);
     85                    compiler.codeGenerator.op_call(pSub_free);
    8486                }
    8587
     
    165167        else{
    166168            //mov r11,qword ptr[rsp+offset]
    167             op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
     169            compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
    168170            obp-=sizeof(long);
    169171            AddLocalVarAddrSchedule();
     
    256258        else{
    257259            //mov r11,qword ptr[rsp+offset]
    258             op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
     260            compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
    259261            obp-=sizeof(long);
    260262            AddLocalVarAddrSchedule();
     
    289291
    290292        //cvttsd2si rax,xmm0
    291         op_cvttsd2si_xmm(sizeof(_int64),REG_RAX,REG_XMM0);
     293        compiler.codeGenerator.op_cvttsd2si_xmm(sizeof(_int64),REG_RAX,REG_XMM0);
    292294    }
    293295    else if(type==DEF_SINGLE){
     
    295297
    296298        //cvttss2si rax,xmm0
    297         op_cvttss2si_xmm(sizeof(_int64),REG_RAX,REG_XMM0);
     299        compiler.codeGenerator.op_cvttss2si_xmm(sizeof(_int64),REG_RAX,REG_XMM0);
    298300    }
    299301
    300302    //cmp rax,0
    301     op_cmp_value(GetTypeSize(type,-1),REG_RAX,0);
     303    compiler.codeGenerator.op_cmp_value(GetTypeSize(type,-1),REG_RAX,0);
    302304
    303305    //setne al
    304     op_setne( REG_RAX );
     306    compiler.codeGenerator.op_setne( REG_RAX );
    305307
    306308    SetWholeVariable( sizeof(char), DEF_BYTE, pRelative);
     
    311313
    312314        //cvttsd2si rax,xmm0
    313         op_cvttsd2si_xmm(sizeof(_int64),REG_RAX,REG_XMM0);
     315        compiler.codeGenerator.op_cvttsd2si_xmm(sizeof(_int64),REG_RAX,REG_XMM0);
    314316    }
    315317    else if(type==DEF_SINGLE){
     
    317319
    318320        //cvttss2si rax,xmm0
    319         op_cvttss2si_xmm(sizeof(_int64),REG_RAX,REG_XMM0);
     321        compiler.codeGenerator.op_cvttss2si_xmm(sizeof(_int64),REG_RAX,REG_XMM0);
    320322    }
    321323    else{
     
    340342        if(pRelative->bOffsetOffset){
    341343            //mov ptr[r11+offset],rax/eax/ax/al
    342             op_mov_MR(varSize,REG_RAX,REG_R11,(int)pRelative->offset,MOD_BASE_DISP32);
     344            compiler.codeGenerator.op_mov_MR(varSize,REG_RAX,REG_R11,(int)pRelative->offset,MOD_BASE_DISP32);
    343345            obp-=sizeof(long);
    344346            pobj_GlobalVarSchedule->add();
     
    347349        else{
    348350            //mov ptr[offset],rax/eax/ax/al
    349             op_mov_MR(varSize,REG_RAX,0,(int)pRelative->offset,MOD_DISP32);
     351            compiler.codeGenerator.op_mov_MR(varSize,REG_RAX,0,(int)pRelative->offset,MOD_DISP32);
    350352            obp-=sizeof(long);
    351353            pobj_GlobalVarSchedule->add();
     
    356358        if(pRelative->bOffsetOffset){
    357359            //add r11,qword ptr[offset]
    358             op_add_RM( sizeof(_int64), REG_R11, REG_NON, (int)pRelative->offset, MOD_DISP32 );
     360            compiler.codeGenerator.op_add_RM( sizeof(_int64), REG_R11, REG_NON, (int)pRelative->offset, MOD_DISP32 );
    359361            obp-=sizeof(long);
    360362            pobj_GlobalVarSchedule->add();
     
    363365        else{
    364366            //mov r11,qword ptr[offset]
    365             op_mov_RM(sizeof(_int64),REG_R11,REG_NON,(int)pRelative->offset,MOD_DISP32);
     367            compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_NON,(int)pRelative->offset,MOD_DISP32);
    366368            obp-=sizeof(long);
    367369            pobj_GlobalVarSchedule->add();
     
    374376        if(pRelative->bOffsetOffset){
    375377            //mov ptr[rsp+r11+offset],rax/eax/ax/al
    376             op_mov_MR_ex(varSize,REG_RAX,REG_RSP,REG_R11,(int)pRelative->offset,USE_OFFSET);
     378            compiler.codeGenerator.op_mov_MR_ex(varSize,REG_RAX,REG_RSP,REG_R11,(int)pRelative->offset,USE_OFFSET);
    377379            obp-=sizeof(long);
    378380            AddLocalVarAddrSchedule();
     
    381383        else{
    382384            //mov ptr[rsp+offset],rax/eax/ax/al
    383             op_mov_MR(varSize,REG_RAX,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
     385            compiler.codeGenerator.op_mov_MR(varSize,REG_RAX,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
    384386            obp-=sizeof(long);
    385387            AddLocalVarAddrSchedule();
     
    390392        if(pRelative->bOffsetOffset){
    391393            //add r11,qword ptr[rsp+offset]
    392             op_add_RM( sizeof(_int64), REG_R11, REG_RSP, (int)pRelative->offset, MOD_BASE_DISP32 );
     394            compiler.codeGenerator.op_add_RM( sizeof(_int64), REG_R11, REG_RSP, (int)pRelative->offset, MOD_BASE_DISP32 );
    393395            obp-=sizeof(long);
    394396            AddLocalVarAddrSchedule();
     
    397399        else{
    398400            //mov r11,qword ptr[rsp+offset]
    399             op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
     401            compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelative->offset,MOD_BASE_DISP32);
    400402            obp-=sizeof(long);
    401403            AddLocalVarAddrSchedule();
     
    409411
    410412        //mov ptr[r11],rax/eax/ax/al
    411         op_mov_MR(varSize,REG_RAX,REG_R11,0,MOD_BASE);
    412     }
    413 }
     413        compiler.codeGenerator.op_mov_MR(varSize,REG_RAX,REG_R11,0,MOD_BASE);
     414    }
     415}
Note: See TracChangeset for help on using the changeset viewer.