void func(void)
{
unsigned char *ip; // byte code instruction pointer
int *stack;
int spi; // stack pointer
...
#define POP() (stack[--spi])
#define PUSH(i) (stack[spi++] = (i))
while (1)
{
switch (*ip++)
{
case ADD:
op1 = POP();
op2 = POP();
result = op1 + op2;
PUSH(result);
break;
case SUB:
...
}
}
}