Exemplo n.º 1
0
 /// <summary>
 /// Add an instruction directly to the flow of instructions.
 /// </summary>
 /// <param name="instruction"></param>
 /// <param name="flags">Operand flags passed.</param>
 void AddInstruction(Instruction instruction, AssemblerOperandFlags flags = AssemblerOperandFlags.None)
 {
     if (flags != AssemblerOperandFlags.None)
     {
         if ((flags & AssemblerOperandFlags.Broadcast) != 0)
         {
             instruction.IsBroadcast = true;
         }
         if ((flags & AssemblerOperandFlags.Zeroing) != 0)
         {
             instruction.ZeroingMasking = true;
         }
         if ((flags & AssemblerOperandFlags.RegisterMask) != 0)
         {
             // register mask is shift by 2 (starts at index 1 for K1)
             instruction.OpMask = (Register)((int)Register.K0 + (((int)(flags & AssemblerOperandFlags.RegisterMask)) >> 6));
         }
         if ((flags & AssemblerOperandFlags.SuppressAllExceptions) != 0)
         {
             instruction.SuppressAllExceptions = true;
         }
         if ((flags & AssemblerOperandFlags.RoundControlMask) != 0)
         {
             instruction.RoundingControl = (RoundingControl)((((int)(flags & AssemblerOperandFlags.RoundControlMask)) >> 3));
         }
     }
     AddInstruction(ref instruction);
 }
Exemplo n.º 2
0
 /// <summary>
 /// Creates a new instance.
 /// </summary>
 /// <param name="size">Size of the operand.</param>
 /// <param name="prefix">Register prefix.</param>
 /// <param name="base">Base register.</param>
 /// <param name="index">Index register.</param>
 /// <param name="scale">Scale of the index.</param>
 /// <param name="displacement">Displacement.</param>
 /// <param name="flags">Flags attached to this operand.</param>
 internal AssemblerMemoryOperand(MemoryOperandSize size, Register prefix, Register @base, Register index, int scale, long displacement, AssemblerOperandFlags flags)
 {
     Size         = size;
     Prefix       = prefix;
     Base         = @base;
     Index        = index;
     Scale        = scale;
     Displacement = displacement;
     Flags        = flags;
 }
Exemplo n.º 3
0
 /// <summary>
 /// Creates a new instance.
 /// </summary>
 /// <param name="size">Size of this memory operand.</param>
 /// <param name="prefix">Register prefix</param>
 /// <param name="flags">Flags</param>
 internal AssemblerMemoryOperandFactory(MemoryOperandSize size, Register prefix, AssemblerOperandFlags flags)
 {
     Size   = size;
     Prefix = prefix;
     Flags  = flags;
 }
Exemplo n.º 4
0
 /// <summary>
 /// Creates a new instance.
 /// </summary>
 /// <param name="size">Size of this memory operand.</param>
 /// <param name="segment">Segment register</param>
 /// <param name="flags">Flags</param>
 internal AssemblerMemoryOperandFactory(MemoryOperandSize size, Register segment, AssemblerOperandFlags flags)
 {
     Size    = size;
     Segment = segment;
     Flags   = flags;
 }