Changeset 64 in dev for BasicCompiler64/Compile_Set_Var.cpp
- Timestamp:
- Mar 8, 2007, 2:49:34 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler64/Compile_Set_Var.cpp
r63 r64 7 7 } 8 8 9 void Set ObjectVariableFromRax(LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,RELATIVE_VAR *pRelativeVar,BOOL bUseHeap){9 void SetStructVariableFromRax(LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,RELATIVE_VAR *pRelativeVar,BOOL bUseHeap){ 10 10 int RightTermReg; 11 11 pobj_reg=new CRegister(REG_RCX); … … 36 36 } 37 37 38 38 /* 39 TODO: 消す 39 40 /////////////////////////////////////////////////////////////////// 40 41 // オペレータ '=' のオーバーロード関数を呼ぶ … … 59 60 int iRet; 60 61 iRet=CallOperatorProc(CALC_SUBSITUATION,NULL,type,index_stack,array_bUseHeap,sp); 61 62 */ 62 63 //右辺用レジスタを解除 63 64 if(IsRealNumberType(CalcType)) pobj_reg->UnlockXmmReg(); … … 71 72 pobj_reg=0; 72 73 73 if(iRet==-1||iRet==1){ 74 //成功したとき、またはエラーが発行されたとき 75 return; 76 } 77 78 79 if( CalcType == DEF_OBJECT ){ 74 75 if( CalcType == DEF_STRUCT ){ 80 76 CClass *pVarClass = (CClass *)lpVarIndex; 81 77 CClass *pCalcClass = (CClass *)lpCalcIndex; 82 78 83 if( pVarClass->IsEquals( pCalcClass ) //等しい 84 || pVarClass->IsSubClass( pCalcClass ) ){ //派生・継承関係 79 if( pVarClass->IsEquals( pCalcClass ) ){ //等しい 85 80 86 81 //双方のオブジェクト型が一致、または派生・継承関係にあるとき … … 122 117 SetError(1,NULL,cp); 123 118 } 119 124 120 125 121 void SetDoubleVariable(int type,RELATIVE_VAR *pRelative){ … … 305 301 } 306 302 } 303 void SetRealVariable(int VarType, int CalcType, RELATIVE_VAR *pRelativeVar){ 304 if(VarType==DEF_DOUBLE){ 305 //Double型変数へスタックの内容を格納する 306 SetDoubleVariable(CalcType,pRelativeVar); 307 } 308 else if(VarType==DEF_SINGLE){ 309 //Single型変数へスタックの内容を格納する 310 SetSingleVariable(CalcType,pRelativeVar); 311 } 312 } 307 313 void SetBooleanVariable(int type,RELATIVE_VAR *pRelative){ 308 314 if(type==DEF_DOUBLE){
Note:
See TracChangeset
for help on using the changeset viewer.