예제 #1
0
        public RegisterFile Pop(RegisterFile registerFile, out byte value)
        {
            if (registerFile.StackPointer >= TopOfStack)
            {
                throw new StackUnderflowException();
            }

            value = Memory.Load(registerFile.StackPointer);
            return(registerFile.WithStackPointer(sp => (ushort)(sp + 1)));
        }
예제 #2
0
 public RegisterFile Push(RegisterFile registerFile, byte value)
 {
     Memory.Store(registerFile.StackPointer, value);
     return(registerFile.WithStackPointer(sp => (ushort)(sp - 1)));
 }