JUMP.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. namespace OpenVIII.Fields.Scripts.Instructions
  2. {
  3. internal sealed class JUMP : JsmInstruction
  4. {
  5. #region Fields
  6. private readonly IJsmExpression _arg0;
  7. private readonly IJsmExpression _arg1;
  8. private readonly IJsmExpression _arg2;
  9. private readonly int _parameter;
  10. #endregion Fields
  11. #region Constructors
  12. public JUMP(int parameter, IJsmExpression arg0, IJsmExpression arg1, IJsmExpression arg2)
  13. {
  14. _parameter = parameter;
  15. _arg0 = arg0;
  16. _arg1 = arg1;
  17. _arg2 = arg2;
  18. }
  19. public JUMP(int parameter, IStack<IJsmExpression> stack)
  20. : this(parameter,
  21. arg2: stack.Pop(),
  22. arg1: stack.Pop(),
  23. arg0: stack.Pop())
  24. {
  25. }
  26. #endregion Constructors
  27. #region Methods
  28. public override string ToString() => $"{nameof(JUMP)}({nameof(_parameter)}: {_parameter}, {nameof(_arg0)}: {_arg0}, {nameof(_arg1)}: {_arg1}, {nameof(_arg2)}: {_arg2})";
  29. #endregion Methods
  30. }
  31. }