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))); }
public RegisterFile Push(RegisterFile registerFile, byte value) { Memory.Store(registerFile.StackPointer, value); return(registerFile.WithStackPointer(sp => (ushort)(sp - 1))); }