Ignore:
Timestamp:
Feb 22, 2007, 3:57:56 AM (17 years ago)
Author:
dai_9181
Message:

グローバル変数に対してByRefを指定できるようにした

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/Compile_Calc_PushVar.cpp

    r40 r62  
    2727            obp+=sizeof(long);
    2828        }
     29    }
     30    else if( pRelativeVar->dwKind == VAR_REFGLOBAL ){
     31        SetError(300,NULL,cp);
    2932    }
    3033    else if(pRelativeVar->dwKind==VAR_LOCAL){
     
    109112        }
    110113    }
     114    else if( pRelativeVar->dwKind == VAR_REFGLOBAL ){
     115        SetError(300,NULL,cp);
     116    }
    111117    else if(pRelativeVar->dwKind==VAR_LOCAL){
    112118        if(pRelativeVar->bOffsetOffset){
     
    188194        }
    189195    }
     196    else if( pRelativeVar->dwKind == VAR_REFGLOBAL ){
     197        if(pRelativeVar->bOffsetOffset){
     198            //add r11,qword ptr[offset]
     199            op_add_RM(sizeof(_int64),REG_R11,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
     200            obp-=sizeof(long);
     201            pobj_GlobalVarSchedule->add();
     202            obp+=sizeof(long);
     203        }
     204        else{
     205            //mov r11,qword ptr[offset]
     206            op_mov_RM(sizeof(_int64),REG_R11,REG_NON,(int)pRelativeVar->offset,MOD_DISP32);
     207            obp-=sizeof(long);
     208            pobj_GlobalVarSchedule->add();
     209            obp+=sizeof(long);
     210        }
     211
     212        goto directmem;
     213    }
    190214    else if(pRelativeVar->dwKind==VAR_LOCAL){
    191215        if(pRelativeVar->bOffsetOffset){
Note: See TracChangeset for help on using the changeset viewer.