Changeset 435 in dev for trunk/abdev/BasicCompiler_Common/src/CommonCodeGenerator.cpp
- Timestamp:
- Mar 15, 2008, 1:20:13 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler_Common/src/CommonCodeGenerator.cpp
r357 r435 304 304 pNativeCode->Put( (long)0 ); 305 305 } 306 307 void CodeGenerator::op_AddNeedFreeTempStructure( int reg ) 308 { 309 #ifdef _AMD64_ 310 ////////////////////////////////////////////////////// 311 ///// レジスタ資源のバックアップ 312 { BACKUP_REGISTER_RESOURCE 313 ////////////////////////////////////////////////////// 314 315 //mov rcx,reg 316 compiler.codeGenerator.op_mov_RR( REG_RCX, reg ); 317 318 //call _System_AddNeedFreeTempStructure 319 extern const UserProc *pSub_System_AddNeedFreeTempStructure; 320 compiler.codeGenerator.op_call( pSub_System_AddNeedFreeTempStructure ); 321 322 ///////////////////////////////////////////// 323 ////// レジスタ資源を復元 324 RESTORE_REGISTER_RESOURCE 325 }//////////////////////////////////////////// 326 #else 327 328 //push useReg(引き続き利用するため、退避しておく) 329 compiler.codeGenerator.op_push( reg ); 330 331 //push useReg 332 compiler.codeGenerator.op_push( reg ); 333 334 //call _System_AddNeedFreeTempStructure 335 extern const UserProc *pSub_System_AddNeedFreeTempStructure; 336 compiler.codeGenerator.op_call( pSub_System_AddNeedFreeTempStructure ); 337 338 //pop useReg(復元する) 339 compiler.codeGenerator.op_pop( reg ); 340 #endif 341 342 isNeedFreeTempStructureInCurrentStep = true; 343 } 344 void CodeGenerator::op_FreeTempStructure() 345 { 346 if( !isNeedFreeTempStructureInCurrentStep ) 347 { 348 // 解放の必要はない 349 return; 350 } 351 352 // call _System_FreeTempStructure 353 extern const UserProc *pSub_System_FreeTempStructure; 354 op_call( pSub_System_FreeTempStructure ); 355 356 isNeedFreeTempStructureInCurrentStep = false; 357 }
Note:
See TracChangeset
for help on using the changeset viewer.