예제 #1
0
        public static RegisterFile Cpse(RegisterFile registerFile, byte r, byte d)
        {
            if (registerFile[r] == registerFile[d])
            {
                return(registerFile.WithProgramCounter(p => p + 1));
            }

            return(registerFile);
        }
예제 #2
0
        public static RegisterFile Brne(RegisterFile registerFile, sbyte k)
        {
            if (!registerFile.StatusRegister.Z)
            {
                return(registerFile.WithProgramCounter(p => (uint)(p + k)));
            }

            return(registerFile);
        }
예제 #3
0
        public static RegisterFile Ret(RegisterFile registerFile, AvrSim.Stack stack)
        {
            registerFile = stack.PopWide(registerFile, out var programCounter);

            return(registerFile.WithProgramCounter(programCounter));
        }
예제 #4
0
 public static RegisterFile Rjmp(RegisterFile registerFile, ushort k)
 {
     return(registerFile.WithProgramCounter(p => (uint)(p + k.ToSigned(12))));
 }