MCPcopy Create free account
hub / github.com/beefytech/Beef / PopulateRegisters

Method PopulateRegisters

IDEHelper/WinDebugger.cpp:5334–5386  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5332}
5333
5334bool WinDebugger::PopulateRegisters(CPURegisters* registers, BF_CONTEXT& lcContext)
5335{
5336#ifdef BF_DBG_32
5337 registers->mIntRegs.eax = lcContext.Eax;
5338 registers->mIntRegs.ecx = lcContext.Ecx;
5339 registers->mIntRegs.edx = lcContext.Edx;
5340 registers->mIntRegs.ebx = lcContext.Ebx;
5341 registers->mIntRegs.esp = lcContext.Esp;
5342 registers->mIntRegs.ebp = lcContext.Ebp;
5343 registers->mIntRegs.esi = lcContext.Esi;
5344 registers->mIntRegs.edi = lcContext.Edi;
5345 registers->mIntRegs.eip = lcContext.Eip;
5346 registers->mIntRegs.efl = lcContext.EFlags;
5347
5348 BF_ASSERT(sizeof(lcContext.FloatSave.RegisterArea) == sizeof(registers->mFpMmRegsArray));
5349 memcpy(registers->mFpMmRegsArray, lcContext.FloatSave.RegisterArea, sizeof(lcContext.FloatSave.RegisterArea));
5350
5351 BF_ASSERT(sizeof(registers->mXmmRegsArray) == 32 * sizeof(float));
5352 memcpy(registers->mXmmRegsArray, &lcContext.ExtendedRegisters[160], sizeof(registers->mXmmRegsArray));
5353#else
5354 registers->mIntRegs.rax = lcContext.Rax;
5355 registers->mIntRegs.rcx = lcContext.Rcx;
5356 registers->mIntRegs.rdx = lcContext.Rdx;
5357 registers->mIntRegs.rbx = lcContext.Rbx;
5358 registers->mIntRegs.rsp = lcContext.Rsp;
5359 registers->mIntRegs.rbp = lcContext.Rbp;
5360 registers->mIntRegs.rsi = lcContext.Rsi;
5361 registers->mIntRegs.rdi = lcContext.Rdi;
5362 registers->mIntRegs.rip = lcContext.Rip;
5363 registers->mIntRegs.efl = lcContext.EFlags;
5364
5365 registers->mIntRegs.r8 = lcContext.R8;
5366 registers->mIntRegs.r9 = lcContext.R9;
5367 registers->mIntRegs.r10 = lcContext.R10;
5368 registers->mIntRegs.r11 = lcContext.R11;
5369 registers->mIntRegs.r12 = lcContext.R12;
5370 registers->mIntRegs.r13 = lcContext.R13;
5371 registers->mIntRegs.r14 = lcContext.R14;
5372 registers->mIntRegs.r15 = lcContext.R15;
5373
5374 registers->mIntRegs.gs = lcContext.SegGs;
5375
5376 for (int i = 0; i < 8; i++)
5377 {
5378 memcpy(&registers->mFpMmRegsArray[i], &lcContext.FltSave.FloatRegisters[i], 10);
5379 }
5380
5381 BF_ASSERT(sizeof(registers->mXmmRegsArray) == 64 * sizeof(float));
5382 memcpy(registers->mXmmRegsArray, BF_CONTEXT_XMMDATA(lcContext), sizeof(registers->mXmmRegsArray));
5383#endif
5384
5385 return (lcContext.ContextFlags & (BF_CONTEXT_EXCEPTION_ACTIVE | BF_CONTEXT_SERVICE_ACTIVE)) == 0;
5386}
5387
5388bool WinDebugger::PopulateRegisters(CPURegisters* registers)
5389{

Callers 2

CreateCallMethod · 0.45
ThreadProcMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected