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/NumOpe_Arithmetic.cpp

    r224 r226  
    104104        if(idCalc==CALC_ADDITION){
    105105            //add reg1,reg2
    106             op_add64_reg(reg1,reg2);
     106            compiler.codeGenerator.op_add64_reg(reg1,reg2);
    107107        }
    108108        else if(idCalc==CALC_SUBTRACTION){
    109109            //sub reg1,reg2
    110             op_sub64_reg(reg1,reg2);
     110            compiler.codeGenerator.op_sub64_reg(reg1,reg2);
    111111        }
    112112        else if(idCalc==CALC_PRODUCT){
    113113            //mul reg1,reg2
    114             op_imul_RR(sizeof(_int64),reg1,reg2);
     114            compiler.codeGenerator.op_imul_RR(sizeof(_int64),reg1,reg2);
    115115        }
    116116
     
    127127        if(idCalc==CALC_ADDITION){
    128128            //add reg1,reg2
    129             op_add32_reg(reg1,reg2);
     129            compiler.codeGenerator.op_add32_reg(reg1,reg2);
    130130        }
    131131        else if(idCalc==CALC_SUBTRACTION){
    132132            //sub reg1,reg2
    133             op_sub32_reg(reg1,reg2);
     133            compiler.codeGenerator.op_sub32_reg(reg1,reg2);
    134134        }
    135135        else if(idCalc==CALC_PRODUCT){
    136136            //mul reg1,reg2
    137             op_imul_RR(sizeof(long),reg1,reg2);
     137            compiler.codeGenerator.op_imul_RR(sizeof(long),reg1,reg2);
    138138        }
    139139
     
    181181    if(reg2==REG_RAX||reg2==REG_RDX){
    182182        //mov r15,reg2
    183         op_mov_RR(REG_R15,reg2);
     183        compiler.codeGenerator.op_mov_RR(REG_R15,reg2);
    184184
    185185        reg2=REG_R15;
     
    207207
    208208        //mov rax,reg1
    209         op_mov_RR(REG_RAX,reg1);
     209        compiler.codeGenerator.op_mov_RR(REG_RAX,reg1);
    210210
    211211        if(IsSignedType(type[sp-2])){
     
    222222
    223223            //xor rdx,rdx
    224             op_zero_reg(REG_RDX);
     224            compiler.codeGenerator.op_zero_reg(REG_RDX);
    225225        }
    226226
    227227        if(IsSignedType(AnswerType)){
    228228            //idiv reg2
    229             op_idiv64_reg(reg2);
     229            compiler.codeGenerator.op_idiv64_reg(reg2);
    230230        }
    231231        else{
    232232            //div reg2
    233             op_div64_reg(reg2);
     233            compiler.codeGenerator.op_div64_reg(reg2);
    234234        }
    235235
    236236        //mov reg1,rdx
    237         op_mov_RR(reg1,REG_RDX);
     237        compiler.codeGenerator.op_mov_RR(reg1,REG_RDX);
    238238
    239239    }
     
    357357    if(reg2==REG_RAX||reg2==REG_RDX){
    358358        //mov r15,reg2
    359         op_mov_RR(REG_R15,reg2);
     359        compiler.codeGenerator.op_mov_RR(REG_R15,reg2);
    360360
    361361        reg2=REG_R15;
     
    383383
    384384        //mov rax,reg1
    385         op_mov_RR(REG_RAX,reg1);
     385        compiler.codeGenerator.op_mov_RR(REG_RAX,reg1);
    386386
    387387        if(IsSignedType(type[sp-2])){
     
    398398
    399399            //xor rdx,rdx
    400             op_zero_reg(REG_RDX);
     400            compiler.codeGenerator.op_zero_reg(REG_RDX);
    401401        }
    402402
    403403        if(IsSignedType(AnswerType)){
    404404            //idiv reg2
    405             op_idiv64_reg(reg2);
     405            compiler.codeGenerator.op_idiv64_reg(reg2);
    406406        }
    407407        else{
    408408            //div reg2
    409             op_div64_reg(reg2);
     409            compiler.codeGenerator.op_div64_reg(reg2);
    410410        }
    411411
    412412        //mov reg1,rax
    413         op_mov_RR(reg1,REG_RAX);
     413        compiler.codeGenerator.op_mov_RR(reg1,REG_RAX);
    414414
    415415    }
     
    499499
    500500        //imul reg,-1
    501         op_imul_RV(sizeof(_int64),reg,-1);
     501        compiler.codeGenerator.op_imul_RV(sizeof(_int64),reg,-1);
    502502
    503503        if(reg==REG_R14){
     
    512512
    513513        //imul reg,-1
    514         op_imul_RV(sizeof(long),reg,-1);
     514        compiler.codeGenerator.op_imul_RV(sizeof(long),reg,-1);
    515515
    516516        if(reg==REG_R14){
     
    549549        if(xmm_reg1==REG_XMM1){
    550550            //movsd xmm0,xmm_reg1
    551             op_movsd_RR(REG_XMM0,xmm_reg1);
     551            compiler.codeGenerator.op_movsd_RR(REG_XMM0,xmm_reg1);
    552552
    553553            //movsd xmm1,xmm_reg2
    554             op_movsd_RR(REG_XMM1,xmm_reg2);
     554            compiler.codeGenerator.op_movsd_RR(REG_XMM1,xmm_reg2);
    555555        }
    556556        else{
    557557            //movsd xmm1,xmm_reg2
    558             op_movsd_RR(REG_XMM1,xmm_reg2);
     558            compiler.codeGenerator.op_movsd_RR(REG_XMM1,xmm_reg2);
    559559
    560560            //movsd xmm0,xmm_reg1
    561             op_movsd_RR(REG_XMM0,xmm_reg1);
     561            compiler.codeGenerator.op_movsd_RR(REG_XMM0,xmm_reg1);
    562562        }
    563563
    564564        //call pow
    565565        extern const UserProc *pSub_pow;
    566         op_call(pSub_pow);
     566        compiler.codeGenerator.op_call(pSub_pow);
    567567
    568568        //movsd xmm4,xmm0
    569         op_movsd_RR(REG_XMM4,REG_XMM0);
     569        compiler.codeGenerator.op_movsd_RR(REG_XMM4,REG_XMM0);
    570570
    571571
     
    586586    else{
    587587        //movsd xmm_reg1,xmm4
    588         op_movsd_RR(xmm_reg1,REG_XMM4);
     588        compiler.codeGenerator.op_movsd_RR(xmm_reg1,REG_XMM4);
    589589    }
    590590
     
    621621    if(reg1==REG_RCX){
    622622        //mov r15,rcx
    623         op_mov_RR(REG_R15,REG_RCX);
     623        compiler.codeGenerator.op_mov_RR(REG_R15,REG_RCX);
    624624
    625625        reg1=REG_R15;
     
    633633
    634634    //mov rcx,reg2
    635     op_mov_RR(REG_RCX,reg2);
     635    compiler.codeGenerator.op_mov_RR(REG_RCX,reg2);
    636636
    637637    if(idCalc==CALC_SHL){
     
    647647
    648648        //shl reg1,cl
    649         op_shl_reg(GetTypeSize(type[sp-2],-1),reg1);
     649        compiler.codeGenerator.op_shl_reg(GetTypeSize(type[sp-2],-1),reg1);
    650650    }
    651651    else if(idCalc==CALC_SHR){
     
    654654
    655655            //sar
    656             op_sar_reg(GetTypeSize(type[sp-2],-1),reg1);
     656            compiler.codeGenerator.op_sar_reg(GetTypeSize(type[sp-2],-1),reg1);
    657657        }
    658658        else{
     
    660660
    661661            //shr
    662             op_shr_reg(GetTypeSize(type[sp-2],-1),reg1);
     662            compiler.codeGenerator.op_shr_reg(GetTypeSize(type[sp-2],-1),reg1);
    663663        }
    664664    }
     
    666666    if(sw==0){
    667667        //mov rcx,r15
    668         op_mov_RR(REG_RCX,REG_R15);
     668        compiler.codeGenerator.op_mov_RR(REG_RCX,REG_R15);
    669669    }
    670670    else{
Note: See TracChangeset for help on using the changeset viewer.