예제 #1
0
 public static bool CrossUsage(InstructionWithDestinationAndSize a, InstructionWithDestinationAndSize b)
 {
     if (!a.DestinationReg.HasValue || !b.DestinationReg.HasValue)
     {
         return(false);
     }
     return(a.DestinationReg.Value == b.DestinationReg.Value);
 }
예제 #2
0
 public static bool IsSegment(InstructionWithDestinationAndSize ins)
 {
     if (ins.DestinationReg.HasValue && Registers.IsSegment(ins.DestinationReg.Value))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
예제 #3
0
        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);
        }
예제 #4
0
 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);
 }
예제 #5
0
 public static bool IsDestinationMemory(InstructionWithDestinationAndSize ins)
 {
     return(ins.DestinationIsIndirect);
 }
예제 #6
0
 public static bool IsDestinationValue(InstructionWithDestinationAndSize ins)
 {
     return(ins.DestinationValue.HasValue);
 }
예제 #7
0
 public static bool IsDestinationField(InstructionWithDestinationAndSize ins)
 {
     return(ins.DestinationRef != null);
 }