#include #define S__TYPE int /* stack element type */ S__TYPE *STACK__S; /* stack */ int SP__S; /* stack pointer */ /* registers */ S__TYPE R__0,R__1,R__2,R__3,R__4,R__5,R__6,R__7,R__8,R__9; /* initial stack */ void INIT__S(void) { STACK__S = (int *) malloc(sizeof(S__TYPE) * (MAX__S+1)); SP__S = 0; } /* return top of stack pointer */ S__TYPE TOP__S(void) { return(SP__S); } /* returns the value at stack pointer + i */ S__TYPE VAL__S(i) S__TYPE i; { return(STACK__S[SP__S+i]); } /* set new stack pointer to be current stack pointer $+ i$ */ void SETSP__S(i) S__TYPE i; { SP__S += i; } /* set the value at stack pointer $+ i$ to $k$ */ void SSET__S(i,k) S__TYPE i,k; { STACK__S[SP__S+i] = k; } /* push k into stack */ void PUSH__S(k) S__TYPE k; { SP__S += 1; STACK__S[SP__S] = k; } /* pop from stack */ S__TYPE POP__S(void) { return(STACK__S[SP__S--]); }