JUMP.cs 950 B

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