public static RegisterFile Cpse(RegisterFile registerFile, byte r, byte d) { if (registerFile[r] == registerFile[d]) { return(registerFile.WithProgramCounter(p => p + 1)); } return(registerFile); }
public static RegisterFile Brne(RegisterFile registerFile, sbyte k) { if (!registerFile.StatusRegister.Z) { return(registerFile.WithProgramCounter(p => (uint)(p + k))); } return(registerFile); }
public static RegisterFile Ret(RegisterFile registerFile, AvrSim.Stack stack) { registerFile = stack.PopWide(registerFile, out var programCounter); return(registerFile.WithProgramCounter(programCounter)); }
public static RegisterFile Rjmp(RegisterFile registerFile, ushort k) { return(registerFile.WithProgramCounter(p => (uint)(p + k.ToSigned(12)))); }