bool Application::Run(bool isAsync) { // 프레임 계산에 쓰일 변수들 float fpsTimer = 0.f; int prevTime = 0; int nowTime = 0; int frameCount = 0; MSG msg; ZeroMemory( &msg, sizeof(msg) ); do { if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { if ( msg.message == WM_QUIT ) return true; TranslateMessage( &msg ); DispatchMessage( &msg ); } else { _UpdateFrame( fpsTimer, prevTime, nowTime, frameCount ); if ( GetKeyState(VK_ESCAPE) & 0x8000 ) { //mRenderer->ToggleFullscreen(); break; } //mKeyEventDispatcher->Dispatch( mKeyEventList ); //mMouseEventDispatcher->Dispatch( mMouseEventList ); GetInputManager().GetKey(); mSceneManager->Update( mDeltaTime ); mCountDPCall = 0; mSceneManager->Render(); } } while (isAsync == false); return true; }
// RegValueHome::SetContextRegister // This will update a register in a given context, and in the regdisplay of a given frame. // Arguments: // input: pContext - context from which the register comes // regnum - enumeration constant indicating which register is to be updated // newVal - the new value for the register contents // output: no out parameters, but the new value will be written to the context and the frame // Notes: We don't take a data target here because we are directly writing process memory and passing // in a context, which has the location to update. // Throws void RegValueHome::SetContextRegister(DT_CONTEXT * pContext, CorDebugRegister regNum, SIZE_T newVal) { LPVOID rdRegAddr; #define _UpdateFrame() \ if (m_pFrame != NULL) \ { \ rdRegAddr = m_pFrame->GetAddressOfRegister(regNum); \ *(SIZE_T *)rdRegAddr = newVal; \ } switch(regNum) { case REGISTER_INSTRUCTION_POINTER: CORDbgSetIP(pContext, (LPVOID)newVal); break; case REGISTER_STACK_POINTER: CORDbgSetSP(pContext, (LPVOID)newVal); break; #if defined(DBG_TARGET_X86) case REGISTER_FRAME_POINTER: CORDbgSetFP(pContext, (LPVOID)newVal); _UpdateFrame(); break; case REGISTER_X86_EAX: pContext->Eax = newVal; _UpdateFrame(); break; case REGISTER_X86_ECX: pContext->Ecx = newVal; _UpdateFrame(); break; case REGISTER_X86_EDX: pContext->Edx = newVal; _UpdateFrame(); break; case REGISTER_X86_EBX: pContext->Ebx = newVal; _UpdateFrame(); break; case REGISTER_X86_ESI: pContext->Esi = newVal; _UpdateFrame(); break; case REGISTER_X86_EDI: pContext->Edi = newVal; _UpdateFrame(); break; #elif defined(DBG_TARGET_AMD64) case REGISTER_AMD64_RBP: pContext->Rbp = newVal; _UpdateFrame(); break; case REGISTER_AMD64_RAX: pContext->Rax = newVal; _UpdateFrame(); break; case REGISTER_AMD64_RCX: pContext->Rcx = newVal; _UpdateFrame(); break; case REGISTER_AMD64_RDX: pContext->Rdx = newVal; _UpdateFrame(); break; case REGISTER_AMD64_RBX: pContext->Rbx = newVal; _UpdateFrame(); break; case REGISTER_AMD64_RSI: pContext->Rsi = newVal; _UpdateFrame(); break; case REGISTER_AMD64_RDI: pContext->Rdi = newVal; _UpdateFrame(); break; case REGISTER_AMD64_R8: pContext->R8 = newVal; _UpdateFrame(); break; case REGISTER_AMD64_R9: pContext->R9 = newVal; _UpdateFrame(); break; case REGISTER_AMD64_R10: pContext->R10 = newVal; _UpdateFrame(); break; case REGISTER_AMD64_R11: pContext->R11 = newVal; _UpdateFrame(); break; case REGISTER_AMD64_R12: pContext->R12 = newVal; _UpdateFrame(); break; case REGISTER_AMD64_R13: pContext->R13 = newVal; _UpdateFrame(); break; case REGISTER_AMD64_R14: pContext->R14 = newVal; _UpdateFrame(); break; case REGISTER_AMD64_R15: pContext->R15 = newVal; _UpdateFrame(); break; #elif defined(DBG_TARGET_ARM) case REGISTER_ARM_R0: pContext->R0 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R1: pContext->R1 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R2: pContext->R2 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R3: pContext->R3 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R4: pContext->R4 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R5: pContext->R5 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R6: pContext->R6 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R7: pContext->R7 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R8: pContext->R8 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R9: pContext->R9 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R10: pContext->R10 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R11: pContext->R11 = newVal; _UpdateFrame(); break; case REGISTER_ARM_R12: pContext->R12 = newVal; _UpdateFrame(); break; case REGISTER_ARM_LR: pContext->Lr = newVal; _UpdateFrame(); break; #elif defined(DBG_TARGET_ARM64) case REGISTER_ARM64_X0: case REGISTER_ARM64_X1: case REGISTER_ARM64_X2: case REGISTER_ARM64_X3: case REGISTER_ARM64_X4: case REGISTER_ARM64_X5: case REGISTER_ARM64_X6: case REGISTER_ARM64_X7: case REGISTER_ARM64_X8: case REGISTER_ARM64_X9: case REGISTER_ARM64_X10: case REGISTER_ARM64_X11: case REGISTER_ARM64_X12: case REGISTER_ARM64_X13: case REGISTER_ARM64_X14: case REGISTER_ARM64_X15: case REGISTER_ARM64_X16: case REGISTER_ARM64_X17: case REGISTER_ARM64_X18: case REGISTER_ARM64_X19: case REGISTER_ARM64_X20: case REGISTER_ARM64_X21: case REGISTER_ARM64_X22: case REGISTER_ARM64_X23: case REGISTER_ARM64_X24: case REGISTER_ARM64_X25: case REGISTER_ARM64_X26: case REGISTER_ARM64_X27: case REGISTER_ARM64_X28: pContext->X[regNum - REGISTER_ARM64_X0] = newVal; _UpdateFrame(); break; case REGISTER_ARM64_LR: pContext->Lr = newVal; _UpdateFrame(); break; #endif default: _ASSERTE(!"Invalid register number!"); ThrowHR(E_FAIL); } } // RegValueHome::SetContextRegister