public static Instruction Destination(this Instruction instuction, Register value) { instuction.MaskedOpCode = instuction.MaskedOpCode.SetDest(OpCodeFlag.Register); instuction.Parameters = instuction.Parameters.Length == 0 ? new uint[] {value} : new[] {value, instuction.Parameters[0]}; return instuction; }
public static Instruction Source(this Instruction instuction, Register value) { instuction.MaskedOpCode = instuction.MaskedOpCode.SetSource(OpCodeFlag.Register); instuction.Parameters = instuction.Parameters.Length == 0 ? new uint[] {value} : new[] { instuction.Parameters[0], value }; return instuction; }
private void Invoke(Action<Cpu, byte, uint, uint> instruction, Register destination, uint value) { instruction(_cpu, (byte) OpCodeFlag.Register | (byte) OpCodeFlag.Constant << 2, destination, value); }
private void Invoke(Action<Cpu, byte, uint, uint> instruction, Register destination, MemoryAddress source) { instruction(_cpu, (byte) OpCodeFlag.Register | (byte) OpCodeFlag.MemoryAddress << 2, destination, source); }
private void Invoke(Action<Cpu, byte, uint> instruction, Register destination) { instruction(_cpu, (byte)OpCodeFlag.Register | (byte)OpCodeFlag.Register << 2, destination); }