public static Instruction Create(uint regdst, ValBase value) { if (value is ValReg) { var ins = new T(); ins.RegDst = regdst; ins.RegSrc = (value as ValReg).Index; return(ins); } else if (value is ValInstant) { var val = (value as ValInstant).Val; if (val < -(1 << 15) || val >= 1 << 15) { return(Failed.OutOfRange); } var ins = new AsmBinaryOpInstant <T>(); ins.RegDst = regdst; ins.Value = (value as ValInstant).Val; return(ins); } else { return(Failed.NotImplemented); } }
public static Instruction Create(uint regdst, ValBase value) { var ins = AsmMovCompressed.Create(regdst, value); if (ins.Success) { return(ins); } return(AsmBinaryOp <AsmMov> .Create(regdst, value)); }
public static Instruction Create(uint regdst, ValBase value) { if (!(value is ValInstant)) { return(Failed.InvalidArgument); } var val = (value as ValInstant).Val; if (val < -(1 << 6) || val >= 1 << 6) { return(Failed.OutOfRange); } var ins = new AsmMovCompressed(); ins.RegDst = regdst; ins.Value = val; return(ins); }
public Mov(ValRegEx regdst, ValBase value) { RegDst = regdst; Value = value; }
public For(ValBase count) { Count = count; }
public For_Static(ValBase count) : base(count) { }
public For_Full(ValRegEx regiter, ValBase initval, ValBase count) : base(count) { RegIter = regiter; InitVal = initval; }
public Wait(ValBase duration, bool omitted) { Duration = duration; _omitted = omitted; }
public StickPress(NintendoSwitch.Key key, string keyname, string direction, ValBase duration) : base(key, keyname, direction) { Duration = duration; }
public ElseIf(CompareOperator op, ValVar left, ValBase right) { Operater = op; Left = left; Right = right; }
public BinaryOp(ValRegEx regdst, ValBase value) { RegDst = regdst; Value = value; }
public If(CompareOperator op, ValRegEx left, ValBase right) { Operater = op; Left = left; Right = right; }
public KeyPress(NintendoSwitch.ECKey key, ValBase duration) : base(key) { Duration = duration; }
public KeyPress(NintendoSwitch.ECKey key) : base(key) { Duration = DefaultDuration; _omitted = true; }
public Sub(ValRegEx regdst, ValBase value) : base(regdst, value) { }
public ShiftRight(ValRegEx regdst, ValBase value) : base(regdst, value) { }