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.