public static bool CrossUsage(InstructionWithDestinationAndSize a, InstructionWithDestinationAndSize b) { if (!a.DestinationReg.HasValue || !b.DestinationReg.HasValue) { return(false); } return(a.DestinationReg.Value == b.DestinationReg.Value); }
public static bool IsSegment(InstructionWithDestinationAndSize ins) { if (ins.DestinationReg.HasValue && Registers.IsSegment(ins.DestinationReg.Value)) { return(true); } else { return(false); } }
public static bool CanTransfer(InstructionWithDestinationAndSize ins, InstructionWithDestinationAndSize ins2) { bool ok = false; if (ins != null) { ok = (IsDestinationRegister(ins) && !IsSegment(ins)) || IsDestinationValue(ins) || IsDestinationField(ins); } else { return(false); } if (ins2 != null) { ok &= (IsDestinationRegister(ins2) && !IsSegment(ins2)) || IsDestinationValue(ins2) || IsDestinationField(ins2); } return(ok); }
public static bool CopyDestination(InstructionWithDestinationAndSize src, ref InstructionWithDestinationAndSourceAndSize ins, bool assrc) { if (assrc && !src.DestinationEmpty) { ins.SourceReg = src.DestinationReg; ins.SourceValue = src.DestinationValue; ins.SourceRef = src.DestinationRef; ins.Size = src.Size; ins.SourceDisplacement = src.DestinationDisplacement; ins.SourceIsIndirect = src.DestinationIsIndirect; return(true); } else if (!src.DestinationEmpty) { ins.DestinationReg = src.DestinationReg; ins.DestinationValue = src.DestinationValue; ins.DestinationRef = src.DestinationRef; ins.Size = src.Size; ins.DestinationDisplacement = src.DestinationDisplacement; ins.DestinationIsIndirect = src.DestinationIsIndirect; return(true); } return(false); }
public static bool IsDestinationMemory(InstructionWithDestinationAndSize ins) { return(ins.DestinationIsIndirect); }
public static bool IsDestinationValue(InstructionWithDestinationAndSize ins) { return(ins.DestinationValue.HasValue); }
public static bool IsDestinationField(InstructionWithDestinationAndSize ins) { return(ins.DestinationRef != null); }