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_Var.cpp

    r224 r226  
    5454        if(typeSize>=2){
    5555            //imul reg,i2
    56             op_imul_RV(sizeof(_int64),reg,typeSize);
     56            compiler.codeGenerator.op_imul_RV(sizeof(_int64),reg,typeSize);
    5757        }
    5858    }
     
    7272
    7373    //add r11,reg
    74     op_add64_reg(REG_R11,reg);
     74    compiler.codeGenerator.op_add64_reg(REG_R11,reg);
    7575}
    7676void SetRelativeOffset( RELATIVE_VAR &relativeVar ){
    7777    if(relativeVar.dwKind==VAR_DIRECTMEM){
    7878        //mov r11,qword ptr[r11]
    79         op_mov_RM(sizeof(_int64),REG_R11,REG_R11,0,MOD_BASE);
     79        compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_R11,0,MOD_BASE);
    8080    }
    8181    else{
     
    8585
    8686        //mov r11,qword ptr[r12]
    87         op_mov_RM(sizeof(_int64),REG_R11,REG_R12,0,MOD_BASE);
     87        compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_R12,0,MOD_BASE);
    8888    }
    8989}
     
    139139
    140140    //xor r12,r12
    141     op_zero_reg(REG_R12);
     141    compiler.codeGenerator.op_zero_reg(REG_R12);
    142142
    143143    for(i=i3-1;i>=0;i--){
     
    173173
    174174        //imul reg,i4
    175         op_imul_RV(sizeof(_int64),reg,i4);
     175        compiler.codeGenerator.op_imul_RV(sizeof(_int64),reg,i4);
    176176
    177177        //add r12,reg
    178         op_add64_reg(REG_R12,reg);
     178        compiler.codeGenerator.op_add64_reg(REG_R12,reg);
    179179
    180180        HeapDefaultFree(pParm[i]);
     
    352352
    353353                //mov r11,qword ptr[r11]
    354                 op_mov_RM(sizeof(_int64),REG_R11,REG_R11,0,MOD_BASE);
     354                compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_R11,0,MOD_BASE);
    355355            }
    356356            else{
     
    652652        //xor r11,r11(r11を0に初期化する)
    653653        //※r11は変数ベースアドレスからの相対オフセットを示す
    654         op_zero_reg(REG_R11);
     654        compiler.codeGenerator.op_zero_reg(REG_R11);
    655655
    656656        pRelativeVar->bOffsetOffset=1;
     
    701701
    702702                //mov r11,qword ptr[r12]
    703                 op_mov_RM(sizeof(_int64),REG_R11,REG_R12,0,MOD_BASE);
     703                compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_R12,0,MOD_BASE);
    704704            }
    705705        }
     
    721721
    722722                //mov r11,qword ptr[r12]
    723                 op_mov_RM(sizeof(_int64),REG_R11,REG_R12,0,MOD_BASE);
     723                compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_R12,0,MOD_BASE);
    724724            }
    725725            else{
     
    872872
    873873            //mov rax,DataPos
    874             op_mov_RV(sizeof(_int64),REG_RAX,i2);
     874            compiler.codeGenerator.op_mov_RV(sizeof(_int64),REG_RAX,i2);
    875875            obp-=sizeof(long);
    876876            pobj_DataTableSchedule->add();
     
    878878
    879879            //mov qword ptr[offset],rax
    880             op_mov_MR(sizeof(_int64),REG_RAX,0,offset,MOD_DISP32);
     880            compiler.codeGenerator.op_mov_MR(sizeof(_int64),REG_RAX,0,offset,MOD_DISP32);
    881881            obp-=sizeof(long);
    882882            pobj_GlobalVarSchedule->add();
     
    10021002
    10031003        //mov rax,i64data
    1004         op_mov64_ToReg(REG_RAX,i64data);
     1004        compiler.codeGenerator.op_mov64_ToReg(REG_RAX,i64data);
    10051005
    10061006        //mov qword ptr[rsp+offset],rax
    1007         op_mov_MR(sizeof(_int64),REG_RAX,REG_RSP,offset,MOD_BASE_DISP32);
     1007        compiler.codeGenerator.op_mov_MR(sizeof(_int64),REG_RAX,REG_RSP,offset,MOD_BASE_DISP32);
    10081008        obp-=sizeof(long);
    10091009        AddLocalVarAddrSchedule();
     
    10151015
    10161016        //mov dword ptr[rsp+offset],value
    1017         op_mov_MV(sizeof(long),REG_RSP,offset,USE_OFFSET,*(int *)&flt);
     1017        compiler.codeGenerator.op_mov_MV(sizeof(long),REG_RSP,offset,USE_OFFSET,*(int *)&flt);
    10181018        obp-=sizeof(long)+sizeof(long);
    10191019        AddLocalVarAddrSchedule();
     
    10301030
    10311031            //mov rax,i2
    1032             op_mov_RV(sizeof(_int64),REG_RAX,i2);
     1032            compiler.codeGenerator.op_mov_RV(sizeof(_int64),REG_RAX,i2);
    10331033            obp-=sizeof(long);
    10341034            pobj_DataTableSchedule->add();
     
    10361036
    10371037            //mov qword ptr[rsp+offset],rax
    1038             op_mov_MR(sizeof(_int64),REG_RAX,REG_RSP,offset,MOD_BASE_DISP32);
     1038            compiler.codeGenerator.op_mov_MR(sizeof(_int64),REG_RAX,REG_RSP,offset,MOD_BASE_DISP32);
    10391039            obp-=sizeof(long);
    10401040            AddLocalVarAddrSchedule();
     
    10441044            if(i64data&0xFFFFFFFF00000000){
    10451045                //mov rax,i64data
    1046                 op_mov64_ToReg(REG_RAX,i64data);
     1046                compiler.codeGenerator.op_mov64_ToReg(REG_RAX,i64data);
    10471047
    10481048                //mov qword ptr[rsp+offset],rax
    1049                 op_mov_MR(sizeof(_int64),REG_RAX,REG_RSP,offset,MOD_BASE_DISP32);
     1049                compiler.codeGenerator.op_mov_MR(sizeof(_int64),REG_RAX,REG_RSP,offset,MOD_BASE_DISP32);
    10501050                obp-=sizeof(long);
    10511051                AddLocalVarAddrSchedule();
     
    10541054            else{
    10551055                //mov qword ptr[rsp+offset],value
    1056                 op_mov_MV(sizeof(_int64),REG_RSP,offset,USE_OFFSET,(int)i64data);
     1056                compiler.codeGenerator.op_mov_MV(sizeof(_int64),REG_RSP,offset,USE_OFFSET,(int)i64data);
    10571057                obp-=sizeof(long)+sizeof(long);
    10581058                AddLocalVarAddrSchedule();
     
    10631063    else if( type.IsDWord() || type.IsLong() ){
    10641064        //mov dword ptr[rsp+offset],value
    1065         op_mov_MV(sizeof(long),REG_RSP,offset,USE_OFFSET,(int)i64data);
     1065        compiler.codeGenerator.op_mov_MV(sizeof(long),REG_RSP,offset,USE_OFFSET,(int)i64data);
    10661066        obp-=sizeof(long)+sizeof(long);
    10671067        AddLocalVarAddrSchedule();
     
    10701070    else if( type.IsWord() || type.IsInteger() ){
    10711071        //mov word ptr[rsp+offset],value
    1072         op_mov_MV(sizeof(short),REG_RSP,offset,USE_OFFSET,(int)i64data);
     1072        compiler.codeGenerator.op_mov_MV(sizeof(short),REG_RSP,offset,USE_OFFSET,(int)i64data);
    10731073        obp-=sizeof(long)+sizeof(short);
    10741074        AddLocalVarAddrSchedule();
     
    10771077    else if( type.IsSByte() || type.IsByte() || type.IsBoolean() ){
    10781078        //mov byte ptr[rsp+offset],value
    1079         op_mov_MV(sizeof(char),REG_RSP,offset,USE_OFFSET,(int)i64data);
     1079        compiler.codeGenerator.op_mov_MV(sizeof(char),REG_RSP,offset,USE_OFFSET,(int)i64data);
    10801080        obp-=sizeof(long)+sizeof(char);
    10811081        AddLocalVarAddrSchedule();
     
    11821182
    11831183            //mov r8, 0
    1184             op_zero_reg( REG_R8 );
     1184            compiler.codeGenerator.op_zero_reg( REG_R8 );
    11851185
    11861186            //mov rdx, VarSize
    1187             op_mov_RV( sizeof(_int64), REG_RDX, pVar->GetMemorySize() );
     1187            compiler.codeGenerator.op_mov_RV( sizeof(_int64), REG_RDX, pVar->GetMemorySize() );
    11881188
    11891189            //mov rcx, rsp
    1190             op_mov_RR( REG_RCX, REG_RSP );
     1190            compiler.codeGenerator.op_mov_RR( REG_RCX, REG_RSP );
    11911191
    11921192            //add rcx, offset
    1193             op_add_RV( REG_RCX, -pVar->GetOffsetAddress() );
     1193            compiler.codeGenerator.op_add_RV( REG_RCX, -pVar->GetOffsetAddress() );
    11941194            obp-=sizeof(long);
    11951195            AddLocalVarAddrSchedule();
     
    11991199            DllProc *pDllProc;
    12001200            pDllProc=GetDeclareHash("FillMemory");
    1201             op_call( pDllProc );
     1201            compiler.codeGenerator.op_call( pDllProc );
    12021202        }
    12031203    }
     
    12401240
    12411241            //mov reg,r11
    1242             op_mov_RR(reg,REG_R11);
     1242            compiler.codeGenerator.op_mov_RR(reg,REG_R11);
    12431243        }
    12441244        else{
    12451245            //mov reg,offset
    1246             op_mov64_ToReg(reg,(int)pRelativeVar->offset);
     1246            compiler.codeGenerator.op_mov64_ToReg(reg,(long)pRelativeVar->offset);
    12471247            obp-=sizeof(long);
    12481248            pobj_GlobalVarSchedule->add();
     
    12531253        if(pRelativeVar->bOffsetOffset){
    12541254            //add r11,qword ptr[offset]
    1255             op_add_RM( sizeof(_int64), REG_R11, REG_NON, (int)pRelativeVar->offset, MOD_DISP32 );
     1255            compiler.codeGenerator.op_add_RM( sizeof(_int64), REG_R11, REG_NON, (int)pRelativeVar->offset, MOD_DISP32 );
    12561256            obp-=sizeof(long);
    12571257            pobj_GlobalVarSchedule->add();
     
    12601260        else{
    12611261            //mov r11,qword ptr[offset]
    1262             op_mov_RM(sizeof(_int64),REG_R11,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
     1262            compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
    12631263            obp-=sizeof(long);
    12641264            pobj_GlobalVarSchedule->add();
     
    12791279
    12801280            //add r11,rsp
    1281             op_add64_reg(REG_R11,REG_RSP);
     1281            compiler.codeGenerator.op_add64_reg(REG_R11,REG_RSP);
    12821282
    12831283            //mov reg,r11
    1284             op_mov_RR(reg,REG_R11);
     1284            compiler.codeGenerator.op_mov_RR(reg,REG_R11);
    12851285        }
    12861286        else{
    12871287            //mov reg,rsp
    1288             op_mov_RR(reg,REG_RSP);
     1288            compiler.codeGenerator.op_mov_RR(reg,REG_RSP);
    12891289
    12901290            //add reg,offset
    1291             op_add_RV(reg,(int)pRelativeVar->offset);
     1291            compiler.codeGenerator.op_add_RV(reg,(int)pRelativeVar->offset);
    12921292            obp-=sizeof(long);
    12931293            AddLocalVarAddrSchedule();
     
    13081308        else{
    13091309            //mov r11,qword ptr[rsp+offset]
    1310             op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
     1310            compiler.codeGenerator.op_mov_RM(sizeof(_int64),REG_R11,REG_RSP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
    13111311            obp-=sizeof(long);
    13121312            AddLocalVarAddrSchedule();
     
    13191319directmem:
    13201320        //mov reg,r11
    1321         op_mov_RR(reg,REG_R11);
     1321        compiler.codeGenerator.op_mov_RR(reg,REG_R11);
    13221322    }
    13231323}
     
    13371337            // 変数領域に要するLONG_PTR単位の個数を引き渡す
    13381338            //mov r8,count
    1339             op_mov_RV(sizeof(_int64), REG_R8,pVar->GetMemorySize()/PTR_SIZE);
     1339            compiler.codeGenerator.op_mov_RV(sizeof(_int64), REG_R8,pVar->GetMemorySize()/PTR_SIZE);
    13401340
    13411341            // ルートポインタを引き渡す
    13421342            //mov rdx,offset
    1343             op_mov_RV(sizeof(_int64), REG_RDX,(int)pVar->GetOffsetAddress());
     1343            compiler.codeGenerator.op_mov_RV(sizeof(_int64), REG_RDX,(int)pVar->GetOffsetAddress());
    13441344            obp-=sizeof(long);
    13451345            pobj_GlobalVarSchedule->add();
     
    13501350
    13511351            // call AddGlobalRootPtr
    1352             op_call( pUserProc_AddGlobalRootPtr );
     1352            compiler.codeGenerator.op_call( pUserProc_AddGlobalRootPtr );
    13531353
    13541354            ReallocNativeCodeBuffer();
Note: See TracChangeset for help on using the changeset viewer.