Esempio n. 1
0
int __stdcall ExampleInstructionEmulator(
	ParsedInstruction instruction,	// parsed instruction data
	CALLER_CONTEXT* context)		// caller context
{
	// Setting GPR registers!
	// Using setters
	setRegValue(REG_ECX, 0xFACEFEED, context);
	setRegValue(REG_EDX, 0x00000000, context);
	// .. or directly in structure
	context->ecx = 0xFACEFEED;
	context->edx = 0x00000000;
	context->flags |= FLAG_ZF;
	// Other registers (SSE), memory etc. need to be set directly!
	__asm movhlps xmm5, xmm4;
	// Memory? Use getEffectiveVA to get address from mem structure
	// But check earlier, whether you deal with 32b or 16b pointer!
	if(instruction.src1 == MEM_32)
		*((UINT32*)getEffectiveVA(instruction.mem, context)) = 0x00000000;
	// Success: handled!
	return TRUE;
}
Esempio n. 2
0
void BMA180::enableWrite()
{
	//ctrl_reg1 register set ee_w bit to enable writing to regs.
	setRegValue(0x0D,0x10,~0x10);
	delayMSec(10);
}
Esempio n. 3
0
void BMA180::disableWrite()
{
	setRegValue(0x0D,0x0,~0x10);
	delayMSec(10);
}
Esempio n. 4
0
void BMA180::SetSMPSkip()
{
	setRegValue(0x35, 1, 0xFE);
}
Esempio n. 5
0
void BMA180::SoftReset() // all values will be default
{
	setRegValue(0x10,0xB6,0);
	delayMSec(100);
}
Esempio n. 6
0
void BMA180::SetISRMode() // you must provide a ISR function on the pin selected (pin 2 or 3,. so INT0 or INT1)
{
	setRegValue(0x21,2,0xFD);
}
Esempio n. 7
0
void BMA180::SetFilter(FILTER f) // 10,20,40,75,150,300,600,1200, HP 1HZ,BP 0.2-300, higher values not authorized
{
	setRegValue(0x20,f<<4,0x0F);
}
Esempio n. 8
0
void BMA180::setGSensitivty(GSENSITIVITY maxg) //1, 1.5 2 3 4 8 16
{
	setRegValue(0x35,maxg<<1,0xF1);
}