public void IsEvDwordTrue() { code = new Byte[] { 0x31, 0x05 }; Assert.IsTrue(ModRM.IsEvDword(code)); }
public RegisterName GetSourceRegisterFor(Byte[] code) { var opcodeEncoding = GetEncodingFor(code); if (GetStackEffectFor(code) == StackEffect.Push) { switch (opcodeEncoding) { case OpcodeEncoding.rBP: { return(RegisterName.EBP); } case OpcodeEncoding.rSI: { return(RegisterName.ESI); } case OpcodeEncoding.rSP: { return(RegisterName.ESP); } case OpcodeEncoding.rAX: { return(RegisterName.EAX); } case OpcodeEncoding.rBX: { return(RegisterName.EBX); } case OpcodeEncoding.rCX: { return(RegisterName.ECX); } case OpcodeEncoding.rDX: { return(RegisterName.EDX); } } } switch (opcodeEncoding) { case OpcodeEncoding.EbGb: case OpcodeEncoding.EvGv: { return(ModRM.GetGvFor(code)); } case OpcodeEncoding.GvEb: case OpcodeEncoding.GvEv: case OpcodeEncoding.GvM: { if (ModRM.HasSIB(code)) { // MOV EAX,DWORD PTR DS:[EDX+EAX*4] // Since SIB does not have a single source register // it currently returns RegisterName.None return(RegisterName.None); } if (ModRM.IsEvDword(code)) { return(RegisterName.None); } return(ModRM.GetEvFor(code)); } default: { return(RegisterName.None); } } }
public void IsEvDwordFalse() { code = new Byte[] { 0x31, 0x07 }; Assert.IsFalse(ModRM.IsEvDword(code)); }