Ignore:
Timestamp:
Mar 9, 2007, 4:59:13 AM (17 years ago)
Author:
dai_9181
Message:

参照型の整数型パラメータに実数を代入すると「内部エラー」になってしまうバグを修正。
参照型の整数型にリテラル値を直接指定すると「内部エラー」になってしまうバグを修正。
バージョンをβ15にした。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler32/Compile_Calc_PushVar.cpp

    r62 r66  
    6666}
    6767void SetReg_WholeVariable(int type,RELATIVE_VAR *pRelativeVar,int reg){
    68     int var_size;
    69 
    70     var_size=GetTypeSize(type,-1);
    71 
    72     if(var_size==sizeof(_int64)){
     68    int varSize;
     69
     70    varSize=GetTypeSize(type,-1);
     71
     72    if(varSize==sizeof(_int64)){
    7373        //64ビットの場合はedx:eaxにロード
    7474        if(reg!=REG_EAX){
     
    9191        if(pRelativeVar->bOffsetOffset){
    9292            //mov reg, ptr[ecx+offset]
    93             op_mov_RM(var_size,reg,REG_ECX,(int)pRelativeVar->offset,MOD_BASE_DISP32);
     93            op_mov_RM(varSize,reg,REG_ECX,(int)pRelativeVar->offset,MOD_BASE_DISP32);
    9494        }
    9595        else{
    9696            //mov reg, ptr[offset]
    97             op_mov_RM(var_size,reg,0,(int)pRelativeVar->offset,MOD_DISP32);
     97            op_mov_RM(varSize,reg,0,(int)pRelativeVar->offset,MOD_DISP32);
    9898        }
    9999        obp-=sizeof(long);
     
    104104        if(pRelativeVar->bOffsetOffset){
    105105            //add ecx,qword ptr[offset]
    106             op_add_RM(var_size,REG_ECX,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
     106            op_add_RM(varSize,REG_ECX,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
    107107        }
    108108        else{
    109109            //mov ecx,qword ptr[offset]
    110             op_mov_RM(var_size,REG_ECX,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
     110            op_mov_RM(varSize,REG_ECX,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
    111111        }
    112112        obp-=sizeof(long);
     
    119119        if(pRelativeVar->bOffsetOffset){
    120120            //mov reg, ptr[ebp+ecx+offset]
    121             op_mov_RM_ex(var_size,reg,REG_EBP,REG_ECX,(int)pRelativeVar->offset,USE_OFFSET);
     121            op_mov_RM_ex(varSize,reg,REG_EBP,REG_ECX,(int)pRelativeVar->offset,USE_OFFSET);
    122122        }
    123123        else{
    124124            //mov reg, ptr[ebp+offset]
    125             op_mov_RM(var_size,reg,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
     125            op_mov_RM(varSize,reg,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
    126126        }
    127127        obp-=sizeof(long);
     
    132132        if(pRelativeVar->bOffsetOffset){
    133133            //add ecx,qword ptr[ebp+offset]
    134             op_add_RM(var_size,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
     134            op_add_RM(varSize,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
    135135        }
    136136        else{
    137137            //mov ecx,qword ptr[ebp+offset]
    138             op_mov_RM(var_size,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
     138            op_mov_RM(varSize,REG_ECX,REG_EBP,(int)pRelativeVar->offset,MOD_BASE_DISP32);
    139139        }
    140140        obp-=sizeof(long);
     
    147147directmem:
    148148        //mov reg, ptr[ecx]
    149         op_mov_RM(var_size,reg,REG_ECX,0,MOD_BASE);
     149        op_mov_RM(varSize,reg,REG_ECX,0,MOD_BASE);
    150150    }
    151151}
Note: See TracChangeset for help on using the changeset viewer.