Changeset 40 in dev for BasicCompiler64
- Timestamp:
- Jan 28, 2007, 3:48:22 AM (18 years ago)
- Location:
- BasicCompiler64
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler64/Compile_Calc.cpp
r36 r40 237 237 SetVariableFromRax(VarType,CalcType,&VarRelativeVar); 238 238 } 239 240 void SetRefVariable( const char *varname, const char *expression ){ 241 //////////////////////////////////////// 242 // 変数のタイプ型を識別して、演算を行う 243 //////////////////////////////////////// 244 245 int VarType,CalcType; 246 LONG_PTR lpVarIndex,lpCalcIndex; 247 BOOL bCalcUseHeap; 248 249 //型を識別 250 VarType=GetVarType(varname,&lpVarIndex,0); 251 if(VarType==-1){ 252 SetError(300,NULL,cp); 253 return; 254 } 255 256 extern LONG_PTR ProcPtr_BaseIndex; 257 if(VarType==DEF_PTR_PROC) ProcPtr_BaseIndex=lpVarIndex; 258 else ProcPtr_BaseIndex=-1; 259 260 //NumOpe...(rax、またはxmm0に答えが格納される) 261 int reg=REG_RAX; 262 CalcType=NumOpe(®,expression,VarType,lpVarIndex,&lpCalcIndex,&bCalcUseHeap); 263 264 //結果を格納しているレジスタをブロッキング 265 pobj_BlockReg->lock(reg); 266 267 if(VarType==-1||CalcType==-1) return; 268 269 //変数アドレスを取得 270 RELATIVE_VAR VarRelativeVar; 271 if(!GetVarOffsetReadWrite( 272 varname, 273 &VarType, 274 &VarRelativeVar, 275 &lpVarIndex)) return; 276 277 //レジスタのブロッキングを解除 278 pobj_BlockReg->clear(); 279 280 if(VarType&FLAG_PTR){ 281 SetError(14,varname,cp); 282 return; 283 } 284 285 if( VarType == DEF_OBJECT && VarRelativeVar.dwKind == VAR_REFLOCAL ){ 286 // 参照型オブジェクトへの代入(初期化)はポインタ変数と同様の処理に値する 287 VarType = PTR_LEVEL_UP( VarType ); 288 289 VarRelativeVar.dwKind = VAR_LOCAL; 290 291 if( CalcType == DEF_OBJECT ){ 292 //右辺値が実体オブジェクトのときは、参照をコピー 293 CalcType = PTR_LEVEL_UP( DEF_OBJECT ); 294 } 295 } 296 else{ 297 SetError(300,NULL,cp); 298 } 299 300 301 ///////////////////////////////// 302 // 右辺、左辺の型チェックを行う 303 ///////////////////////////////// 304 305 CheckDifferentType(VarType,lpVarIndex,CalcType,lpCalcIndex,0,0); 306 307 308 ///////////////////////////////////////////////// 309 // rax(実数はxmm0)の内容を変数にコピー 310 ///////////////////////////////////////////////// 311 SetVariableFromRax(VarType,CalcType,&VarRelativeVar); 312 } -
BasicCompiler64/Compile_Calc_PushVar.cpp
r3 r40 53 53 } 54 54 } 55 else if( pRelativeVar->dwKind==VAR_REFLOCAL){55 else if( pRelativeVar->dwKind == VAR_REFLOCAL ){ 56 56 if(pRelativeVar->bOffsetOffset){ 57 57 //add r11,qword ptr[rsp+offset] … … 134 134 } 135 135 } 136 else if( pRelativeVar->dwKind==VAR_REFLOCAL){136 else if( pRelativeVar->dwKind == VAR_REFLOCAL ){ 137 137 if(pRelativeVar->bOffsetOffset){ 138 138 //add r11,qword ptr[rsp+offset] … … 204 204 } 205 205 } 206 else if( pRelativeVar->dwKind==VAR_REFLOCAL){206 else if( pRelativeVar->dwKind == VAR_REFLOCAL ){ 207 207 if(pRelativeVar->bOffsetOffset){ 208 208 //add r11,qword ptr[rsp+offset] -
BasicCompiler64/Compile_CallProc.cpp
r31 r40 339 339 } 340 340 341 if(psi->ReturnType==DEF_OBJECT ){341 if(psi->ReturnType==DEF_OBJECT && psi->isReturnRef == false ){ 342 342 //_System_ReturnObject(第一または第二パラメータのダミーを作成) 343 343 sprintf(temporary+lstrlen(temporary),"%c%c0,",1,ESC_BYVAL); … … 378 378 379 379 380 if(psi->ReturnType==DEF_OBJECT ){380 if(psi->ReturnType==DEF_OBJECT && psi->isReturnRef == false){ 381 381 ////////////////////////////////////////////////////// 382 382 // 戻り値にオブジェクト インスタンスを持つ場合 -
BasicCompiler64/Compile_ProcOp.cpp
r34 r40 461 461 else temp=psi->name; 462 462 463 if(psi->ReturnType==DEF_OBJECT ){463 if(psi->ReturnType==DEF_OBJECT && psi->isReturnRef == false){ 464 464 //戻り値用オブジェクトのコンストラクタを呼び出す 465 465 if(psi->u.Return_pobj_c->ConstructorMemberSubIndex!=-1){ … … 470 470 else{ 471 471 //戻り値用の変数の定義 472 sprintf(temporary,"%s%c%c",temp,1,ESC_AS); 472 if( psi->isReturnRef ){ 473 sprintf(temporary,"%c%c",1,ESC_BYREF); 474 } 475 else temporary[0]=0; 476 477 sprintf(temporary+lstrlen(temporary),"%s%c%c",temp,1,ESC_AS); 473 478 GetTypeName(psi->ReturnType,psi->u.ReturnIndex,temporary+lstrlen(temporary)); 479 474 480 OpcodeDim(temporary,0); 475 481 } … … 568 574 else offset=0; 569 575 for(i3=0;i3<pobj_CompilingClass->iMemberNum;i3++){ 576 CMember *pMember = pobj_CompilingClass->ppobj_Member[i3]; 570 577 MemberTypeSize= 571 GetTypeSize(p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.type,572 p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.u.lpIndex);578 GetTypeSize(pMember->TypeInfo.type, 579 pMember->TypeInfo.u.lpIndex); 573 580 574 581 MemberObjectNum= 575 JumpSubScripts(p obj_CompilingClass->ppobj_Member[i3]->SubScripts);576 577 offset=GetSizeOfClassMember(pobj_CompilingClass,p obj_CompilingClass->ppobj_Member[i3]->name,NULL);578 579 if(p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.type==DEF_OBJECT){580 if(p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.u.pobj_Class->ConstructorMemberSubIndex!=-1){581 i5=p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.u.pobj_Class->ConstructorMemberSubIndex;582 if(p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.u.pobj_Class->ppobj_Method[i5]->psi->RealParmNum==1){ //Thisポインタを第一引数に持ち合わせるため、引数なしの場合はこの値が1になる582 JumpSubScripts(pMember->SubScripts); 583 584 offset=GetSizeOfClassMember(pobj_CompilingClass,pMember->name,NULL); 585 586 if(pMember->TypeInfo.type==DEF_OBJECT && pMember->IsRef() == false){ 587 if(pMember->TypeInfo.u.pobj_Class->ConstructorMemberSubIndex!=-1){ 588 i5=pMember->TypeInfo.u.pobj_Class->ConstructorMemberSubIndex; 589 if(pMember->TypeInfo.u.pobj_Class->ppobj_Method[i5]->psi->RealParmNum==1){ //Thisポインタを第一引数に持ち合わせるため、引数なしの場合はこの値が1になる 583 590 for(i4=0;i4<MemberObjectNum;i4++){ 584 591 //Thisポインタをrcxにコピー … … 589 596 590 597 //call constructor 591 op_call(p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.u.pobj_Class->ppobj_Method[i5]->psi);598 op_call(pMember->TypeInfo.u.pobj_Class->ppobj_Method[i5]->psi); 592 599 } 593 600 } … … 672 679 int MemberObjectNum; 673 680 for(i3=pobj_CompilingClass->iMemberNum-1;i3>=0;i3--){ 681 CMember *pMember = pobj_CompilingClass->ppobj_Member[i3]; 674 682 MemberTypeSize= 675 GetTypeSize(p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.type,676 p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.u.lpIndex);683 GetTypeSize(pMember->TypeInfo.type, 684 pMember->TypeInfo.u.lpIndex); 677 685 678 686 MemberObjectNum= 679 JumpSubScripts(p obj_CompilingClass->ppobj_Member[i3]->SubScripts);680 681 offset=GetSizeOfClassMember(pobj_CompilingClass,p obj_CompilingClass->ppobj_Member[i3]->name,NULL);682 683 if(p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.type==DEF_OBJECT){684 if(p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.u.pobj_Class->DestructorMemberSubIndex!=-1){687 JumpSubScripts(pMember->SubScripts); 688 689 offset=GetSizeOfClassMember(pobj_CompilingClass,pMember->name,NULL); 690 691 if(pMember->TypeInfo.type==DEF_OBJECT && pMember->IsRef() == false){ 692 if(pMember->TypeInfo.u.pobj_Class->DestructorMemberSubIndex!=-1){ 685 693 for(i4=MemberObjectNum-1;i4>=0;i4--){ 686 694 //Thisポインタをrcxにコピー … … 691 699 692 700 //call destructor 693 i5=p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.u.pobj_Class->DestructorMemberSubIndex;694 op_call(p obj_CompilingClass->ppobj_Member[i3]->TypeInfo.u.pobj_Class->ppobj_Method[i5]->psi);701 i5=pMember->TypeInfo.u.pobj_Class->DestructorMemberSubIndex; 702 op_call(pMember->TypeInfo.u.pobj_Class->ppobj_Method[i5]->psi); 695 703 } 696 704 } -
BasicCompiler64/Compile_Set_Var.cpp
r36 r40 179 179 } 180 180 } 181 else if( pRelative->dwKind==VAR_REFLOCAL){181 else if( pRelative->dwKind == VAR_REFLOCAL ){ 182 182 if(pRelative->bOffsetOffset){ 183 183 //add r11,qword ptr[rsp+offset] … … 267 267 } 268 268 } 269 else if( pRelative->dwKind==VAR_REFLOCAL){269 else if( pRelative->dwKind == VAR_REFLOCAL ){ 270 270 if(pRelative->bOffsetOffset){ 271 271 //add r11,qword ptr[rsp+offset] … … 383 383 } 384 384 } 385 else if( pRelative->dwKind==VAR_REFLOCAL){385 else if( pRelative->dwKind == VAR_REFLOCAL ){ 386 386 if(pRelative->bOffsetOffset){ 387 387 //add r11,qword ptr[rsp+offset] -
BasicCompiler64/Compile_Statement.cpp
r36 r40 959 959 else temp=pCompilingSubInfo->name; 960 960 961 char temporary[VN_SIZE]; 962 sprintf(temporary,"%s=%s",temp,Parameter); 963 OpcodeCalc(temporary); 961 if( pCompilingSubInfo->isReturnRef ){ 962 //参照型 963 SetRefVariable( temp, Parameter ); 964 } 965 else{ 966 //値型 967 char temporary[VN_SIZE]; 968 sprintf(temporary,"%s=%s",temp,Parameter); 969 OpcodeCalc(temporary); 970 } 964 971 } 965 972 -
BasicCompiler64/Compile_Var.cpp
r36 r40 206 206 } 207 207 208 CMember *pMember=pobj_c->ppobj_Member[i]; 209 208 210 209 211 //アクセシビリティをチェック 210 212 if(pobj_c==pobj_CompilingClass){ 211 213 //同一クラスオブジェクトの場合はプライベートアクセスを容認する 212 if(p obj_c->ppobj_Member[i]->dwAccess==ACCESS_NON){214 if(pMember->dwAccess==ACCESS_NON){ 213 215 if(isErrorEnabled) SetError(107,VarName,cp); 214 216 return 0; … … 216 218 } 217 219 else{ 218 if((bPrivateAccess==0&&p obj_c->ppobj_Member[i]->dwAccess==ACCESS_PRIVATE)||219 p obj_c->ppobj_Member[i]->dwAccess==ACCESS_NON){220 if((bPrivateAccess==0&&pMember->dwAccess==ACCESS_PRIVATE)|| 221 pMember->dwAccess==ACCESS_NON){ 220 222 if(isErrorEnabled) SetError(107,VarName,cp); 221 223 return 0; 222 224 } 223 else if(bPrivateAccess==0&&p obj_c->ppobj_Member[i]->dwAccess==ACCESS_PROTECTED){225 else if(bPrivateAccess==0&&pMember->dwAccess==ACCESS_PROTECTED){ 224 226 if(isErrorEnabled) SetError(108,VarName,cp); 225 227 return 0; … … 229 231 //Const定義の場合は書き込みアクセスを制限する 230 232 //※コンストラクタをコンパイル中の場合は例外的に許可する 231 if( p obj_c->ppobj_Member[i]->IsConst() && //定数メンバである233 if( pMember->IsConst() && //定数メンバである 232 234 isWriteAccess && //書き込みアクセスを要求されている 233 235 pobj_c->IsCompilingConstructor() == false //コンストラクタ コンパイル中を除く … … 237 239 } 238 240 239 *pType=p obj_c->ppobj_Member[i]->TypeInfo.type;240 *plpNestIndex=p obj_c->ppobj_Member[i]->TypeInfo.u.lpIndex;241 *pType=pMember->TypeInfo.type; 242 *plpNestIndex=pMember->TypeInfo.u.lpIndex; 241 243 242 244 //ポインタ変数の場合 243 245 if(IsPtrType(*pType)){ 244 if(p obj_c->ppobj_Member[i]->SubScripts[0]==-1){246 if(pMember->SubScripts[0]==-1){ 245 247 lstrcpy(lpPtrOffset,array); 246 248 array[0]=0; … … 265 267 if(array[0]){ 266 268 //配列オフセット 267 if(!GetArrayOffset(p obj_c->ppobj_Member[i]->SubScripts,array,*pType,pobj_c->ppobj_Member[i]->TypeInfo.u.lpIndex)){269 if(!GetArrayOffset(pMember->SubScripts,array,*pType,pMember->TypeInfo.u.lpIndex)){ 268 270 if(isErrorEnabled) SetError(14,member,cp); 269 271 } 270 272 } 271 else if(p obj_c->ppobj_Member[i]->SubScripts[0]!=-1){273 else if(pMember->SubScripts[0]!=-1){ 272 274 *pType|=FLAG_PTR; 273 275 } … … 276 278 //入れ子構造の場合 277 279 278 if(*pType==DEF_OBJECT ){280 if(*pType==DEF_OBJECT && pMember->IsRef() == false){ 279 281 if(RefType!=DEF_OBJECT){ 280 282 if(isErrorEnabled) SetError(104,member,cp); … … 282 284 } 283 285 } 284 else if(*pType==DEF_PTR_OBJECT ){286 else if(*pType==DEF_PTR_OBJECT || ( *pType==DEF_OBJECT && pMember->IsRef() )){ 285 287 //構造体ポインタ型メンバ変数 286 288 287 289 if(lpPtrOffset[0]){ 288 290 //pObj[n].member 289 if( RefType!=DEF_OBJECT){291 if(*pType==DEF_PTR_OBJECT&&RefType!=DEF_OBJECT){ 290 292 if(isErrorEnabled) SetError(104,member,cp); 291 293 return 0; … … 300 302 else{ 301 303 //pObj->member 302 if( RefType!=DEF_PTR_OBJECT){304 if(*pType==DEF_PTR_OBJECT&&RefType!=DEF_PTR_OBJECT){ 303 305 if(isErrorEnabled) SetError(104,member,cp); 304 306 return 0; … … 347 349 isErrorEnabled, 348 350 isWriteAccess, 349 p obj_c->ppobj_Member[i]->TypeInfo.u.pobj_Class,351 pMember->TypeInfo.u.pobj_Class, 350 352 NestMember, 351 353 pType, … … 383 385 SetReg_WholeVariable(DEF_PTR_VOID,&RelativeVar,reg); 384 386 } 385 BOOL GetVarOffset(bool isErrorEnabled,bool isWriteAccess,c har *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss){387 BOOL GetVarOffset(bool isErrorEnabled,bool isWriteAccess,const char *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss){ 386 388 extern BOOL bCompilingGlobal; 387 389 int i,RefType; … … 432 434 pRelativeVar->offset=-LocalVar[i].offset; 433 435 pRelativeVar->bOffsetOffset=0; 434 if(LocalVar[i].fRef) pRelativeVar->dwKind=VAR_REFLOCAL; 436 if(LocalVar[i].fRef){ 437 // 参照型 438 pRelativeVar->dwKind = VAR_REFLOCAL; 439 } 435 440 else pRelativeVar->dwKind=VAR_LOCAL; 436 441 *pType=LocalVar[i].type; … … 1045 1050 1046 1051 1047 void dim(char *Parameter,DWORD dwFlag ){1052 void dim(char *Parameter,DWORD dwFlags){ 1048 1053 extern BOOL bCompilingGlobal; 1049 1054 extern HANDLE hHeap; … … 1051 1056 char VarName[VN_SIZE]; 1052 1057 1053 1054 if(dwFlag & DIMFLAG_CONST){ 1058 //参照型かどうか 1059 bool isRef = false; 1060 1061 i2 = 0; 1062 1063 if( Parameter[i2] == 1 && Parameter[i2+1] == ESC_BYREF ){ 1064 //参照型 1065 isRef = true; 1066 Parameter += 2; 1067 } 1068 1069 if(dwFlags & DIMFLAG_CONST){ 1070 1055 1071 ////////////////////////////////// 1056 1072 // 定数変数の場合を考慮 1057 1073 ////////////////////////////////// 1058 for( i2=0;;i2++){1074 for(;;i2++){ 1059 1075 if(Parameter[i2] == '=' || 1060 1076 Parameter[i2] == 1 && Parameter[i2] == ESC_AS || … … 1083 1099 char InitBuf[8192]; 1084 1100 char ConstractParameter[VN_SIZE]; 1085 if(!GetDimentionFormat(Parameter, VarName,SubScripts,&TypeInfo,InitBuf,ConstractParameter))1101 if(!GetDimentionFormat(Parameter, isRef , VarName,SubScripts,&TypeInfo,InitBuf,ConstractParameter)) 1086 1102 return; 1087 1103 … … 1104 1120 TypeSize=GetTypeSize(TypeInfo.type,TypeInfo.u.lpIndex); 1105 1121 1106 if(dwFlag &DIMFLAG_STATIC){1122 if(dwFlags&DIMFLAG_STATIC){ 1107 1123 if(bCompilingGlobal){ 1108 1124 SetError(60,NULL,cp); … … 1118 1134 GetNowStaticVarFullName(VarName,temporary); 1119 1135 1120 AddGlobalVariable(temporary,SubScripts,&TypeInfo,TypeSize,InitBuf,ConstractParameter,dwFlag );1136 AddGlobalVariable(temporary,SubScripts,&TypeInfo,TypeSize,InitBuf,ConstractParameter,dwFlags); 1121 1137 1122 1138 /* … … 1131 1147 ///////////////////////// 1132 1148 1133 AddGlobalVariable(VarName,SubScripts,&TypeInfo,TypeSize,InitBuf,ConstractParameter,dwFlag );1149 AddGlobalVariable(VarName,SubScripts,&TypeInfo,TypeSize,InitBuf,ConstractParameter,dwFlags); 1134 1150 } 1135 1151 else{ … … 1149 1165 1150 1166 LocalVar=(VARIABLE *)HeapReAlloc(hHeap,0,LocalVar,(MaxLocalVarNum+1)*sizeof(VARIABLE)); 1167 VARIABLE *pVar = &LocalVar[MaxLocalVarNum]; 1168 MaxLocalVarNum++; 1169 1170 if( isRef ){ 1171 //参照型 1172 pVar->fRef = REF_VARIABLE; 1173 TypeSize = PTR_SIZE; 1174 } 1175 else pVar->fRef=0; 1151 1176 1152 1177 for(i2=1,i3=0;i3<255;i3++){ 1153 1178 //配列要素数 1154 LocalVar[MaxLocalVarNum].SubScripts[i3]=SubScripts[i3];1179 pVar->SubScripts[i3]=SubScripts[i3]; 1155 1180 1156 1181 if(SubScripts[i3]==-1) break; … … 1160 1185 if(VarSize%8) VarSize+=8-(VarSize%8); 1161 1186 1162 VARIABLE *pVar = &LocalVar[MaxLocalVarNum];1163 1164 MaxLocalVarNum++;1165 1166 1187 //変数データを追加 1167 1188 lstrcpy(pVar->name,VarName); 1168 pVar->fRef=0; 1169 if(dwFlag & DIMFLAG_CONST) pVar->bConst = true; 1189 if(dwFlags & DIMFLAG_CONST) pVar->bConst = true; 1170 1190 else pVar->bConst = false; 1171 1191 if(SubScripts[0]==-1) pVar->bArray=0; … … 1194 1214 if(!result){ 1195 1215 //動的な式だった場合は代入演算を行う 1196 char temporary[8192]; 1197 sprintf(temporary,"%s=%s",VarName,InitBuf); 1198 OpcodeCalc(temporary); 1216 if( isRef ){ 1217 SetRefVariable( VarName, InitBuf ); 1218 } 1219 else{ 1220 char temporary[8192]; 1221 sprintf(temporary,"%s=%s",VarName,InitBuf); 1222 OpcodeCalc(temporary); 1223 } 1199 1224 } 1200 1225 … … 1227 1252 1228 1253 //コンストラクタ呼び出し 1229 if(TypeInfo.type==DEF_OBJECT&&(dwFlag &DIMFLAG_NONCALL_CONSTRACTOR)==0){1254 if(TypeInfo.type==DEF_OBJECT&&(dwFlags&DIMFLAG_NONCALL_CONSTRACTOR)==0&& isRef == false ){ 1230 1255 CallConstractor(VarName,SubScripts,TypeInfo,ConstractParameter); 1231 1256 } … … 1239 1264 } 1240 1265 } 1241 void OpcodeDim(char *Parameter,DWORD dwFlag ){1266 void OpcodeDim(char *Parameter,DWORD dwFlags){ 1242 1267 int i,i2,i3,IsStr=0; 1243 1268 char temporary[8192]; … … 1261 1286 temporary[i2]=0; 1262 1287 1263 dim(temporary,dwFlag );1288 dim(temporary,dwFlags); 1264 1289 1265 1290 if(Parameter[i]=='\0') break; … … 1322 1347 } 1323 1348 } 1324 else if( pRelativeVar->dwKind==VAR_REFLOCAL){1349 else if( pRelativeVar->dwKind == VAR_REFLOCAL ){ 1325 1350 if(pRelativeVar->bOffsetOffset){ 1326 1351 //add r11,qword ptr[rsp+offset] -
BasicCompiler64/Opcode.h
r38 r40 52 52 53 53 //変数の種類 54 #define NON_VAR 0 55 #define VAR_GLOBAL 1 //Global Variable 56 #define VAR_LOCAL 2 //Local Variable 57 #define VAR_REFLOCAL 3 //Local Refference Variable 58 #define VAR_DIRECTMEM 4 //Direct memory 54 #define NON_VAR 0 55 #define VAR_GLOBAL 1 //Global Variable 56 #define VAR_LOCAL 2 //Local Variable 57 #define VAR_REFLOCAL 3 //Local Refference Variable 58 #define VAR_DIRECTMEM 5 //Direct memory 59 59 60 60 61 extern int cp; … … 245 246 void SetVariableFromRax(int VarType,int CalcType,RELATIVE_VAR *pRelativeVar); 246 247 void OpcodeCalc(char *Command); 248 void SetRefVariable( const char *varname, const char *expression ); 247 249 248 250 //NumOpe.cpp … … 310 312 void GetWithName(char *buffer); 311 313 void SetThisPtrToReg(int reg); 312 BOOL GetVarOffset(bool isErrorEnabled,bool isWriteAccess,c har *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss=0);314 BOOL GetVarOffset(bool isErrorEnabled,bool isWriteAccess,const char *NameBuffer,int *pType,RELATIVE_VAR *pRelativeVar,LONG_PTR *plpIndex,int *pss=0); 313 315 BOOL SetInitGlobalData(int offset,int type,LONG_PTR lpIndex,int *SubScripts,char *InitBuf); 314 #define DIMFLAG_INITDEBUGVAR 1315 #define DIMFLAG_NONCALL_CONSTRACTOR 2316 #define DIMFLAG_STATIC 4317 #define DIMFLAG_CONST 8316 #define DIMFLAG_INITDEBUGVAR 0x01 317 #define DIMFLAG_NONCALL_CONSTRACTOR 0x02 318 #define DIMFLAG_STATIC 0x04 319 #define DIMFLAG_CONST 0x08 318 320 void OpcodeDim(char *Parameter,DWORD dwFlag); 319 321 void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar); -
BasicCompiler64/WatchList.cpp
r3 r40 24 24 return pobj_dti->lplpSpBase[i2]+pRelativeVar->offset; 25 25 } 26 else if( pRelativeVar->dwKind==VAR_REFLOCAL){26 else if( pRelativeVar->dwKind == VAR_REFLOCAL ){ 27 27 extern HWND hDebugWnd; 28 28 i2=(int)SendDlgItemMessage(hDebugWnd,IDC_PROCCOMBO,CB_GETCURSEL,0,0);
Note:
See TracChangeset
for help on using the changeset viewer.