public InstructionNode(InstructionId instructionId, InstructionOptions instructionOptions, Operand[] operands) : base(CodeNodeType.Instruction) { InstructionId = instructionId; InstructionOptions = instructionOptions; Operands = operands; MemoryOperandIndex = Constants.InvalidValue; for (var i = 0; i < operands.Length; i++) { if (!operands[i].IsMemory()) { continue; } MemoryOperandIndex = i; break; } Flags |= CodeNodeFlags.Removable; }
public void InitializeFrom(InstructionOptions options) { this.Code = options.Code; this.InstructionOperandVM.WriteValue(Code, options.Operand); this.SequencePoint = options.SequencePoint; }
public void Initialize(InstructionOptions options) { this.origOptions = options; Reinitialize(); }
public InstructionOptions CopyTo(InstructionOptions options) { options.Code = this.Code; options.Operand = this.InstructionOperandVM.Value; options.SequencePoint = this.SequencePoint; return options; }
internal void Emit(InstructionId instructionId, Operand o0, Operand o1, Operand o2, Operand o3, InstructionOptions options) { _instructionOptions = options; Emit(instructionId, o0, o1, o2, o3); }
internal void Unfollow() { _instructionOptions |= InstructionOptions.Unfollow; }
public JumpNode(InstructionId instructionId, InstructionOptions instructionOptions, Operand[] operands) : base(instructionId, instructionOptions, operands) { }