public static OpcodeEncoder AppendSIB(this OpcodeEncoder encoder, int scale, Register index, Register @base) { Debug.Assert(scale == 1 || scale == 2 || scale == 4 || scale == 8); int svalue = 0; if (scale == 1) svalue = 0; else if (scale == 2) svalue = 1; else if (scale == 4) svalue = 2; else if (scale == 8) svalue = 3; // scale encoder.AppendBits(svalue, 2); // index if (index == null) encoder.Append3Bits(Bits.b100); else encoder.AppendRegister(index); // base if (@base == null) encoder.Append3Bits(Bits.b101); else encoder.AppendRegister(@base); return encoder; }
public static OpcodeEncoder AppendRM(this OpcodeEncoder encoder, Register register) { return encoder.Append3Bits(register.RegisterCode); }
public static OpcodeEncoder AppendRegister(this OpcodeEncoder encoder, Operand operand) { return encoder.Append3Bits(operand.Register.RegisterCode); }
public static OpcodeEncoder AppendRM(this OpcodeEncoder encoder, byte value) { return encoder.Append3Bits(value); }
public static OpcodeEncoder AppendRegister(this OpcodeEncoder encoder, int value) { return encoder.Append3Bits(value); }