Stacks are very simple. Here's some pseudo code.
char stack[32767]; /* stack space */
char *stackPtr;
stackPtr = &stack[0]; /* init stack pointer */
/* push */
/* use memcpy() to copy object onto stack at location stackPtr */
stackPtr += sizeof(object_copied);
/* pull */
stackPtr -= sizeof(object_copied);
/*use memcpy() to copy object off stack at location stackPtr */
/* range checking */
if(stackPtr < &stack[0])
bail_out_with_error(STACK_UNDERFLOW);
if(stackPtr > (&stack[0] + 32768))
bail_out_with_error(STACK_OVERFLOW);
enjoy.