示例#1
0
CpuStateX86::CpuStateX86(const debug_cpu_state_x86& state)
	:
	fSetRegisters(),
	fInterruptVector(0)
{
	SetIntRegister(X86_REGISTER_EIP, state.eip);
	SetIntRegister(X86_REGISTER_ESP, state.user_esp);
	SetIntRegister(X86_REGISTER_EBP, state.ebp);
	SetIntRegister(X86_REGISTER_EAX, state.eax);
	SetIntRegister(X86_REGISTER_EBX, state.ebx);
	SetIntRegister(X86_REGISTER_ECX, state.ecx);
	SetIntRegister(X86_REGISTER_EDX, state.edx);
	SetIntRegister(X86_REGISTER_ESI, state.esi);
	SetIntRegister(X86_REGISTER_EDI, state.edi);
	SetIntRegister(X86_REGISTER_CS, state.cs);
	SetIntRegister(X86_REGISTER_DS, state.ds);
	SetIntRegister(X86_REGISTER_ES, state.es);
	SetIntRegister(X86_REGISTER_FS, state.fs);
	SetIntRegister(X86_REGISTER_GS, state.gs);
	SetIntRegister(X86_REGISTER_SS, state.user_ss);

	fInterruptVector = state.vector;
}
示例#2
0
CpuStateX8664::CpuStateX8664(const x86_64_debug_cpu_state& state)
	:
	fSetRegisters()
{
	SetIntRegister(X86_64_REGISTER_RIP, state.rip);
	SetIntRegister(X86_64_REGISTER_RSP, state.rsp);
	SetIntRegister(X86_64_REGISTER_RBP, state.rbp);
	SetIntRegister(X86_64_REGISTER_RAX, state.rax);
	SetIntRegister(X86_64_REGISTER_RBX, state.rbx);
	SetIntRegister(X86_64_REGISTER_RCX, state.rcx);
	SetIntRegister(X86_64_REGISTER_RDX, state.rdx);
	SetIntRegister(X86_64_REGISTER_RSI, state.rsi);
	SetIntRegister(X86_64_REGISTER_RDI, state.rdi);
	SetIntRegister(X86_64_REGISTER_R8, state.r8);
	SetIntRegister(X86_64_REGISTER_R9, state.r9);
	SetIntRegister(X86_64_REGISTER_R10, state.r10);
	SetIntRegister(X86_64_REGISTER_R11, state.r11);
	SetIntRegister(X86_64_REGISTER_R12, state.r12);
	SetIntRegister(X86_64_REGISTER_R13, state.r13);
	SetIntRegister(X86_64_REGISTER_R14, state.r14);
	SetIntRegister(X86_64_REGISTER_R15, state.r15);
	SetIntRegister(X86_64_REGISTER_CS, state.cs);
	SetIntRegister(X86_64_REGISTER_DS, state.ds);
	SetIntRegister(X86_64_REGISTER_ES, state.es);
	SetIntRegister(X86_64_REGISTER_FS, state.fs);
	SetIntRegister(X86_64_REGISTER_GS, state.gs);
	SetIntRegister(X86_64_REGISTER_SS, state.ss);
}
示例#3
0
CpuStateX8664::CpuStateX8664(const x86_64_debug_cpu_state& state)
	:
	fSetRegisters(),
	fInterruptVector(0)
{
	SetIntRegister(X86_64_REGISTER_RIP, state.rip);
	SetIntRegister(X86_64_REGISTER_RSP, state.rsp);
	SetIntRegister(X86_64_REGISTER_RBP, state.rbp);
	SetIntRegister(X86_64_REGISTER_RAX, state.rax);
	SetIntRegister(X86_64_REGISTER_RBX, state.rbx);
	SetIntRegister(X86_64_REGISTER_RCX, state.rcx);
	SetIntRegister(X86_64_REGISTER_RDX, state.rdx);
	SetIntRegister(X86_64_REGISTER_RSI, state.rsi);
	SetIntRegister(X86_64_REGISTER_RDI, state.rdi);
	SetIntRegister(X86_64_REGISTER_R8, state.r8);
	SetIntRegister(X86_64_REGISTER_R9, state.r9);
	SetIntRegister(X86_64_REGISTER_R10, state.r10);
	SetIntRegister(X86_64_REGISTER_R11, state.r11);
	SetIntRegister(X86_64_REGISTER_R12, state.r12);
	SetIntRegister(X86_64_REGISTER_R13, state.r13);
	SetIntRegister(X86_64_REGISTER_R14, state.r14);
	SetIntRegister(X86_64_REGISTER_R15, state.r15);
	SetIntRegister(X86_64_REGISTER_CS, state.cs);
	SetIntRegister(X86_64_REGISTER_DS, state.ds);
	SetIntRegister(X86_64_REGISTER_ES, state.es);
	SetIntRegister(X86_64_REGISTER_FS, state.fs);
	SetIntRegister(X86_64_REGISTER_GS, state.gs);
	SetIntRegister(X86_64_REGISTER_SS, state.ss);

	const x86_64_extended_registers& extended = state.extended_registers;

	SetFloatRegister(X86_64_REGISTER_ST0,
		(double)(*(long double*)(extended.fp_registers[0].value)));
	SetFloatRegister(X86_64_REGISTER_ST1,
		(double)(*(long double*)(extended.fp_registers[1].value)));
	SetFloatRegister(X86_64_REGISTER_ST2,
		(double)(*(long double*)(extended.fp_registers[2].value)));
	SetFloatRegister(X86_64_REGISTER_ST3,
		(double)(*(long double*)(extended.fp_registers[3].value)));
	SetFloatRegister(X86_64_REGISTER_ST4,
		(double)(*(long double*)(extended.fp_registers[4].value)));
	SetFloatRegister(X86_64_REGISTER_ST5,
		(double)(*(long double*)(extended.fp_registers[5].value)));
	SetFloatRegister(X86_64_REGISTER_ST6,
		(double)(*(long double*)(extended.fp_registers[6].value)));
	SetFloatRegister(X86_64_REGISTER_ST7,
		(double)(*(long double*)(extended.fp_registers[7].value)));

	SetMMXRegister(X86_64_REGISTER_MM0, extended.mmx_registers[0].value);
	SetMMXRegister(X86_64_REGISTER_MM1, extended.mmx_registers[1].value);
	SetMMXRegister(X86_64_REGISTER_MM2, extended.mmx_registers[2].value);
	SetMMXRegister(X86_64_REGISTER_MM3, extended.mmx_registers[3].value);
	SetMMXRegister(X86_64_REGISTER_MM4, extended.mmx_registers[4].value);
	SetMMXRegister(X86_64_REGISTER_MM5, extended.mmx_registers[5].value);
	SetMMXRegister(X86_64_REGISTER_MM6, extended.mmx_registers[6].value);
	SetMMXRegister(X86_64_REGISTER_MM7, extended.mmx_registers[7].value);

	SetXMMRegister(X86_64_REGISTER_XMM0, extended.xmm_registers[0].value);
	SetXMMRegister(X86_64_REGISTER_XMM1, extended.xmm_registers[1].value);
	SetXMMRegister(X86_64_REGISTER_XMM2, extended.xmm_registers[2].value);
	SetXMMRegister(X86_64_REGISTER_XMM3, extended.xmm_registers[3].value);
	SetXMMRegister(X86_64_REGISTER_XMM4, extended.xmm_registers[4].value);
	SetXMMRegister(X86_64_REGISTER_XMM5, extended.xmm_registers[5].value);
	SetXMMRegister(X86_64_REGISTER_XMM6, extended.xmm_registers[6].value);
	SetXMMRegister(X86_64_REGISTER_XMM7, extended.xmm_registers[7].value);
	SetXMMRegister(X86_64_REGISTER_XMM8, extended.xmm_registers[8].value);
	SetXMMRegister(X86_64_REGISTER_XMM9, extended.xmm_registers[9].value);
	SetXMMRegister(X86_64_REGISTER_XMM10, extended.xmm_registers[10].value);
	SetXMMRegister(X86_64_REGISTER_XMM11, extended.xmm_registers[11].value);
	SetXMMRegister(X86_64_REGISTER_XMM12, extended.xmm_registers[12].value);
	SetXMMRegister(X86_64_REGISTER_XMM13, extended.xmm_registers[13].value);
	SetXMMRegister(X86_64_REGISTER_XMM14, extended.xmm_registers[14].value);
	SetXMMRegister(X86_64_REGISTER_XMM15, extended.xmm_registers[15].value);

	fInterruptVector = state.vector;
}
示例#4
0
void
CpuStateX8664::SetInstructionPointer(target_addr_t address)
{
	SetIntRegister(X86_64_REGISTER_RIP, address);
}
示例#5
0
void
CpuStateX86::SetInstructionPointer(target_addr_t address)
{
	SetIntRegister(X86_REGISTER_EIP, (uint32)address);
}