예제 #1
0
            public static void FloatStoreAndPop(XSRegisters.Register32 register, bool isIndirect = false, int?displacement = null, XSRegisters.RegisterSize?size = null)
            {
                if (displacement != null)
                {
                    isIndirect = true;
                    if (displacement == 0)
                    {
                        displacement = null;
                    }
                }

                if (size == null)
                {
                    if (isIndirect)
                    {
                        throw new InvalidOperationException("No size specified!");
                    }
                    size = register.Size;
                }

                new FloatStoreAndPop
                {
                    DestinationReg          = register.RegEnum,
                    DestinationIsIndirect   = isIndirect,
                    DestinationDisplacement = displacement,
                    Size = (byte)size
                };
            }
예제 #2
0
 public static void ConvertSD2SIAndTruncate(XSRegisters.Register32 destination, XSRegisters.RegisterXMM source)
 {
     new ConvertSD2SIAndTruncate
     {
         DestinationReg = destination,
         SourceReg      = source
     };
 }
예제 #3
0
 public static void MoveSD(XSRegisters.Register32 destination, XSRegisters.RegisterXMM source, bool destinationIsIndirect = false)
 {
     new MoveSD()
     {
         DestinationReg        = destination,
         DestinationIsIndirect = destinationIsIndirect,
         SourceReg             = source
     };
 }
예제 #4
0
 public static void MoveSD(XSRegisters.RegisterXMM destination, XSRegisters.Register32 source, bool sourceIsIndirect = false)
 {
     new MoveSD()
     {
         DestinationReg   = destination,
         SourceReg        = source,
         SourceIsIndirect = sourceIsIndirect
     };
 }
예제 #5
0
 public static void ConvertSD2SS(XSRegisters.RegisterXMM destination, XSRegisters.Register32 source, bool sourceIsIndirect = false)
 {
     new ConvertSD2SS()
     {
         DestinationReg   = destination,
         SourceReg        = source,
         SourceIsIndirect = sourceIsIndirect
     };
 }
예제 #6
0
 public static void ConvertSI2SD(XSRegisters.RegisterXMM destination, XSRegisters.Register32 source, bool sourceIsIndirect = false, int?sourceDisplacement = null, bool destinationIsIndirect = false, int?destinationDisplacement = null)
 {
     new ConvertSI2SD()
     {
         DestinationReg          = destination,
         DestinationIsIndirect   = destinationIsIndirect,
         DestinationDisplacement = destinationDisplacement,
         SourceReg          = source,
         SourceIsIndirect   = sourceIsIndirect,
         SourceDisplacement = sourceDisplacement
     };
 }
예제 #7
0
            public static void FloatAdd(XSRegisters.Register32 destination, bool isIndirect = false, XSRegisters.RegisterSize?size = null)
            {
                if (size == null)
                {
                    if (isIndirect)
                    {
                        throw new InvalidOperationException("No size specified!");
                    }
                    size = destination.Size;
                }

                new FloatAdd
                {
                    DestinationReg        = destination,
                    DestinationIsIndirect = isIndirect,
                    Size = (byte)size.Value
                };
            }
예제 #8
0
            public static void IntLoad(XSRegisters.Register32 destination, bool isIndirect = false, int?displacement = null, XSRegisters.RegisterSize?size = null)
            {
                if (size == null)
                {
                    if (isIndirect)
                    {
                        throw new InvalidOperationException("No size specified!");
                    }
                    size = destination.Size;
                }

                if (displacement != null)
                {
                    isIndirect = true;
                }

                new IntLoad
                {
                    DestinationReg        = destination,
                    DestinationIsIndirect = isIndirect,
                    Size = (byte)size.Value
                };
            }
예제 #9
0
 public static void FloatLoad(XSRegisters.Register32 register, bool destinationIsIndirect = false, int?displacement = null, XSRegisters.RegisterSize?size = null)
 {
     Do <FloatLoad>(register, isIndirect: destinationIsIndirect, displacement: displacement, size: size);
 }